我想在'key'上合并两个数据框。当右侧包含与左侧相同的键时,我希望左侧使用右侧的匹配列(“ A”列)中的内容进行更新。
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'], 'A': ['A0', 'A1', 'A2', 'A3']})
right = pd.DataFrame({'key': ['K0', 'K2'], 'A': ['new', 'new']})
left.merge(right, on="key", how="outer")
输出:
key A_x A_y
0 K0 A0 new
1 K1 A1 NaN
2 K2 A2 new
3 K3 A3 NaN
放置后缀:“ A_x”和“ A_y”
所需的输出是:
key A
0 K0 new
1 K1 A1
2 K2 new
3 K3 A3
A列需要在左右数据框中相同的键值上进行合并吗?
答案 0 :(得分:1)
一种轻松的方法是使用update
:
u = left.set_index('key')
u.update(right.set_index('key'))
u.reset_index()
key A
0 K0 new
1 K1 A1
2 K2 new
3 K3 A3
如果“键”列是唯一的,您还可以concat
并删除重复项:
(pd.concat([left, right])
.drop_duplicates('key', keep='last')
.sort_index()
.reset_index(drop=True))
key A
0 K0 new
1 K1 A1
2 K2 new
3 K3 A3