我有两个数据框,第一个:df1: product price0 apples 1.991 bananas 1.20 2 oranges 1.493 lemons 0.54 Olive Oil 8.99df2: product product.1 product.2 0 apples bananas Olive Oil1 bananas lemons oranges2 Olive Oil bananas oranges3 lemons apples bananas我希望第二个数据框中的一列是基于第一个数据框中每个项目的价格的价格总和。所以期望的结果是: product product.1 product.2 total_price 0 apples bananas Olive Oil 12.181 bananas lemons oranges 3.192 Olive Oil bananas oranges 11.683 lemons apples bananas 3.69实现这一目标的最佳方法是什么?我尝试合并 df2 中每一列的名称上的数据帧,但这似乎很耗时,特别是当 df1 获取更多行而 df2 获取更多列时。df = pd.merge(df1, df2, how='right', left_on='product', right_on='product')df = pd.merge(df1, df2, how='right', left_on='product', right_on='product.1')df = pd.merge(df1, df2, how='right', left_on='product', right_on='product.2') df['Total_Price'] = df['price']+df['price.1']+df['price.2']
1 回答
![?](http://img1.sycdn.imooc.com/545850200001359c02200220-100-100.jpg)
杨__羊羊
TA贡献1943条经验 获得超7个赞
您可以尝试如下所示:
首先,将 df1 转换为键和值的字典
在上面使用字典,
applymap
后面跟着sum
可能下面的代码片段会做类似的事情:
dictionary_val = { k[0]: k[1] for k in df1.values }
df2['Total_Price'] = df2.applymap(lambda row: dictionary_val[row]).sum(axis=1) # Note not creating new dataframe but using existing one
那么结果是df2:
product product.1 product.2 Total_Price
0 apples bananas Olive Oil 12.18
1 bananas lemons oranges 3.19
2 Olive Oil bananas oranges 11.68
3 lemons apples bananas 3.69
添加回答
举报
0/150
提交
取消