此问题包含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)
解决方法:
这是一种方式:
cols = ['Value1', 'Value2']
df4 = df1[cols].subtract(df2[cols].add(df3[cols]))\
.assign(**{'Market': 'RemainingCustomers', 'Product Code': [1, 2, 3]})\
.sort_index(axis=1)
# Market Product Code Value1 Value2
# 0 RemainingCustomers 1 4 1
# 1 RemainingCustomers 2 3 5
# 2 RemainingCustomers 3 16 9
说明
> df1 [cols] .subtract(df2 [cols] .add(df3 [cols]))仅对指定的列执行计算.
> assign(** {‘Market’:’RemainingCustomers’,’Product Code’:[1,2,3]})添加结果数据帧所需的额外列.
> sort_index(axis = 1)重新排序所需输出的列.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。