我有两个大小不同的数据帧,我正试图根据另一个公共列中的匹配值,对两个数据帧中的一个公共栏中的值进行相加。我的第一个数据帧是这样的:
df1
ID name region earnings
101 Joseph A 100
102 Adam A 200
103 Clint C 150
104 Mark C 60
105 Michael A 0
df2看起来像这个
ID earnings
101 20
103 40
105 60
我的预期结果是
ID name region earnings
101 Joseph A 120
102 Adam A 200
103 Clint C 190
104 Mark C 60
105 Michael A 60
我该怎么办?我的第一个想法是迭代每一行,但后来我读到这是不鼓励的,因为它的性能很差。
您可以使用map
+set_index
+fillna
:
df1['earnings'] += df1['ID'].map(df2.set_index('ID')['earnings']).fillna(0).astype(int)
输出:
>>> df1
ID name region earnings
0 101 Joseph A 120
1 102 Adam A 200
2 103 Clint C 190
3 104 Mark C 60
4 105 Michael A 60