簡體   English   中英

熊貓從另一個數據幀填充一個數據幀上的空值

[英]Pandas fill empty values on one dataframe from another dataframe

這是我可以使用 XLOOKUP 函數在 Excel 中輕松復制的內容,但我正在嘗試使用 Pandas 來完成。

我有 2 個數據框,可以這樣說:

df1

|first_name | last_name | dob      | value |
| Goku      | Saiyan    | 1/1/2021 |       |
| Vegetta   |  Super    | 8/7/1990 |       |
| Gohan     |  Son      | 4/20/1969|       |

df2

|first_name | last_name | dob      | value |
| Goku      | Saiyan    | 1/1/2021 |   50  |
| Vegetta   |  Super    | 8/7/1990 |   92  |
| Gohan     |  Son      | 4/20/1969|   31  |
| Trunks    |  Donald   | 7/1/1921 |   49  |
| New Name  |  Another  | 1/31/1992|   67  |

我想,以填補value從在DF1列value在DF2列。

我不能使用combine_first因為數據幀有不同的索引和不同的大小。

如果我使用pd.merge然后我得到value_xvalue_y ,其中value_y有我想要的數據,但我需要做更多的過程才能將它放在我想要的df1['value']

我基本上想匹配兩個數據幀上的名字、姓氏和 dob,並從 df2 接收value

這可能是一個簡單的問題,但我一直在努力嘗試我嘗試過的不同方法,我認為一定有我遺漏的東西,因為它不應該那么復雜。

任何幫助將不勝感激。

如果df1中的value列不包含現有值,則可以刪除它並使用merge

>>> pd.merge(df1.drop(columns='value'), df2, how='left',
             on=['first_name', 'last_name', 'dob'])

  first_name last_name        dob  value
0       Goku    Saiyan   1/1/2021     50
1    Vegetta     Super   8/7/1990     92
2      Gohan       Son  4/20/1969     31

使用地圖。

創建一個 firts_name 的字典; df2 的值並映射到 df1 的 first_name。

df1 =df1.assign(value=df1['first_name'].map(dict(zip(df2['first_name'],df2['value']))))



   first_name last_name        dob  value
0       Goku    Saiyan   1/1/2021     50
1    Vegetta     Super   8/7/1990     92
2      Gohan       Son  4/20/1969     31

暫無
暫無

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

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