我有2个相同列的数据框。列“键”将有唯一的值。
Dataframe 1:-
A B key C
0 1 k1 2
1 2 k2 3
2 3 k3 5
Dataframe 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中的行。此外,如果键是新的,则将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
6条答案
按热度按时间vql8enpb1#
看起来你要找的是
combine_first
。3lxsmp7m2#
试试这个:
kr98yfug3#
首先,您需要指定索引列:
然后,组合 Dataframe ,使所有索引键就位(这不会更新df1值!请参见:combine_first manual):
最后一步是使用df2更新df1中的值并重置索引
zf2sa74q4#
尝试附加和删除重复项:
5fjcxozz5#
假设两个 Dataframe 具有相同的索引列
iqjalb3h6#
在每个 Dataframe 上将同一列设置为索引后: