我有两个数据框,第一个:
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']
您可以尝试以下操作:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句