我有2个具有相同列的数据框。列“键”将具有唯一值。
数据框1:-
A B key C
0 1 k1 2
1 2 k2 3
2 3 k3 5
数据框2:-
A B key C
4 5 k1 2
1 2 k2 3
2 3 k4 5
如果Dataframe -2中的键与Dataframe -1相匹配,我想用Dataframe -2中的值更新Dataframe-1中的行。
同样,如果key是new,则将Dataframe-2的整个行添加到Dataframe-1。
最终输出数据帧与相同的列类似。
A B key C
4 5 k1 2 --> update
1 2 k2 3 --> no changes
2 3 k3 5 --> no changes
2 3 k4 5 --> new row
我试过下面的代码。合并后,我只需要4列“A”,“B”,“键”,“C”,没有任何后缀。
df3 = df1.merge(df2,on='key',how='outer')
>>> df3
A_x B_x key C_x A_y B_y C_y
0 0.0 1.0 k1 2.0 4.0 5.0 2.0
1 1.0 2.0 k2 3.0 1.0 2.0 3.0
2 2.0 3.0 k3 5.0 NaN NaN NaN
3 NaN NaN k4 NaN 2.0 3.0 5.0
最佳答案
似乎您在寻找combine_first
。
a = df2.set_index('key')
b = df1.set_index('key')
(a.combine_first(b)
.reset_index()
.reindex(columns=df1.columns))
A B key C
0 4.0 5.0 k1 2.0
1 1.0 2.0 k2 3.0
2 2.0 3.0 k3 5.0
3 2.0 3.0 k4 5.0
关于python - Pandas 更新并在一个数据帧中添加行,并在另一个数据帧中添加键列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47844529/