簡體   English   中英

根據另一個數據框中的值將列添加到數據框中

[英]Adding column to dataframe based on values in another dataframe

我有兩個數據框第一個:

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']

您可以嘗試以下操作:

  1. 首先,將 df1 轉換為鍵值字典
  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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM