0

我有一个基本数据框 df1:

id   name   count
1    a       10
2    b       20
3    c       30
4    d       40
5    e       50

在这里,我有一个带有更新 df2 的新数据框:

id   name   count
1    a       11
2    b       22
3    f       30
4    g       40

我想在列名上覆盖并附加这两个数据框。例如: a 和 b 存在于 df1 中,但也存在于具有更新计数值的 df2 中。所以我们用 a 和 b 的新计数来更新 df1。由于 f 和 g 在 df1 中不存在,所以我们附加它们。这是所需操作后的示例:

id   name   count
1    a       11
2    b       22
3    c       30
4    d       40
5    e       50
3    f       30
4    g       40

我尝试了 df.merge 或 pd.concat 但似乎没有任何东西可以提供我需要的输出。?任何一个都可以

4

1 回答 1

2

使用combine_first

df2=df2.set_index(['id','name'])
df2.combine_first(df1.set_index(['id','name'])).reset_index()
Out[198]: 
   id name  count
0   1    a   11.0
1   2    b   22.0
2   3    c   30.0
3   3    f   30.0
4   4    d   40.0
5   4    g   40.0
6   5    e   50.0
于 2018-10-15T20:58:09.243 回答