在列值上覆盖并附加熊猫数据框

时间:2018-10-15 20:52:50

标签: python python-3.x pandas dataframe pandasql

我有一个基本数据框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。由于df1中不存在f和g,因此我们将其附加。 这是所需操作后的示例:

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,但是似乎没有任何输出给我所需的输出。可以

1 个答案:

答案 0 :(得分: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