我有兩個數據框,第一個: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 回答

楊__羊羊
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
提交
取消