合并两个DataFrame,但更新原始列

时间:2019-01-10 21:13:52

标签: python pandas dataframe

我想在'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列需要在左右数据框中相同的键值上进行合并吗?

1 个答案:

答案 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