[英]Pandas fill dataframe with count of values within a range from another dataframe
[英]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_x
和value_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.