【发布时间】:2020-09-18 21:36:34
【问题描述】:
我有两个数据框,第一个:
df1:
product price
0 apples 1.99
1 bananas 1.20
2 oranges 1.49
3 lemons 0.5
4 Olive Oil 8.99
df2:
product product.1 product.2
0 apples bananas Olive Oil
1 bananas lemons oranges
2 Olive Oil bananas oranges
3 lemons apples bananas
我希望第二个数据框中的一列是基于第一个数据框中每个项目的价格的价格总和。所以期望的结果是:
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
完成此任务的最佳方法是什么?我已经尝试合并 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']
【问题讨论】:
-
是否可以将df1更改为字典和映射值,或者将df1变大以更改为dict?
标签: python pandas dataframe merge pivot-table