gpt4 book ai didi

python - 如何根据另一个 DataFrame 的条件创建新的 DataFrame

转载 作者:行者123 更新时间:2023-12-01 23:17:32 27 4
gpt4 key购买 nike

假设我有以下 DataFrame:

A   B   C   D   E   F    Cost 
0 1 1 0 0 0 10
0 0 1 0 1 0 3
1 0 0 0 0 1 5
0 1 0 1 0 0 7

我想根据上面的值构建一个新的 DataFrame。

具体来说,如果 value==1 则将它们的列合并为一个,并为上面的 Cost 列中的新列分配值。

所以预期的输出是这样的:

BC  CE  AF  BD    
10 3 5 7

我怎样才能实现这样的目标?

最佳答案

我们可以试试 dot对具有列名的二进制列进行排序,以获取基于 1 和 0 的 key 字符串,然后将 Cost 列添加回来:

cols = df.columns.difference(['Cost'])
new_df = df[cols].dot(cols).to_frame(name='key')
new_df['Cost'] = df['Cost']

new_df:

  key  Cost
0 BC 10
1 CE 3
2 AF 5
3 BD 7

如果需要,可以转置 DataFrame:

cols = df.columns.difference(['Cost'])
new_df = df[cols].dot(cols).to_frame(name='key')
new_df['Cost'] = df['Cost']
new_df = new_df.set_index('key').T.rename_axis(columns=None)

new_df:

      BC  CE  AF  BD
Cost 10 3 5 7

DataFrame 和导入:

import pandas as pd

df = pd.DataFrame({
"A": [0, 0, 1, 0],
"B": [1, 0, 0, 1],
"C": [1, 1, 0, 0],
"D": [0, 0, 0, 1],
"E": [0, 1, 0, 0],
"F": [0, 0, 1, 0],
"Cost": [10, 3, 5, 7],
})

关于python - 如何根据另一个 DataFrame 的条件创建新的 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68638666/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com