如何根据条件执行两个数据帧列的添加



我有两个大小不同的数据帧,我正试图根据另一个公共列中的匹配值,对两个数据帧中的一个公共栏中的值进行相加。我的第一个数据帧是这样的:

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

相关内容

  • 没有找到相关文章

最新更新