gpt4 book ai didi

python - 从另一个数据框中减去一个 Pandas 数据框中的属性值

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:33 24 4
gpt4 key购买 nike

这个问题包含 3 个独立的数据框。df1代表产品1,2,3的'Total',包含'value1','value2'df2代表产品1,2,3的'Customer1',包含'value1','value2'df3代表产品1,2,3的'Customer2',包含'value1','value2'

df2 和 df3 本质上是 df1 的子集。

我想创建另一个数据框,从 df1 中减去 df2&df3 并标记此 df4。我希望 df4 成为“市场”列中的“剩余客户”。

这是我目前所做的

import pandas as pd


d1 = {'Market': ['Total', 'Total','Total'], 'Product Code': [1, 2, 3],
'Value1':[10, 20, 30], 'Value2':[5, 15, 25]}
df1 = pd.DataFrame(data=d1)
df1



d2 = {'Market': ['Customer1', 'Customer1','Customer1'], 'Product Code': [1,
2, 3], 'Value1':[3, 14, 10], 'Value2':[2, 4, 6]}
df2 = pd.DataFrame(data=d2)
df2


d3 = {'Market': ['Customer2', 'Customer2','Customer2'], 'Product Code': [1,
2, 3], 'Value1':[3, 3, 4], 'Value2':[2, 6, 10]}
df3 = pd.DataFrame(data=d3)
df3

这会产生以下结果..

Market  Product Code  Value1  Value2
0 Total 1 10 5
1 Total 2 20 15
2 Total 3 30 25
Market Product Code Value1 Value2
0 Customer1 1 3 2
1 Customer1 2 14 4
2 Customer1 3 10 6
Market Product Code Value1 Value2
0 Customer2 1 3 2
1 Customer2 2 3 6
2 Customer2 3 4 10

要创建 df4,我尝试了以下代码并收到错误“TypeError:不支持的操作数类型 -:‘str’和‘str’”有人能帮忙吗?

df4 = df1-(df2+df3)

print(df4)

最佳答案

下拉Market,将Product Code设置为索引,对产品代码进行索引对齐算法。之后,只需重置索引并将 Market 插入结果。

df1, df2, df3 = [
df.drop('Market', 1).set_index('Product Code') for df in [df1, df2, df3]
]

df4 = (df1 - (df2 + df3)).reset_index()
df4.insert(0, 'Market', 'RemainingCustomers')

Market Product Code Value1 Value2
0 RemainingCustomers 1 4 1
1 RemainingCustomers 2 3 5
2 RemainingCustomers 3 16 9

关于python - 从另一个数据框中减去一个 Pandas 数据框中的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48859167/

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