根据另一个数据框中的匹配ID替换数据框列值

时间:2020-06-10 01:33:56

标签: python python-3.x pandas dataframe

我正在尝试根据其他数据框中的值替换数据框中的值。请假设两个数据框中还有其他列。一个简单的例子:

df1

id    name  ......
123   city a
456   city b
789   city c
789   city c
456   city b
123   city a

依此类推

df2

id    name  ......
123   City A
456   City B
789   City C

所以最终的df应该是:

id    name  ......
123   City A
456   City B
789   City C
789   City C
456   City B
123   City A

我尝试了一些没有运气的熊猫合并选项。是否有一种简单的方法根据id上的匹配将第二个数据帧中的值替换为第一个数据帧中的所有值?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您可以

df1['New name']=df1.id.map(df2.set_index('id').name)

更新

namediff=df1.columns.difference(df2.columns).tolist()+['id']
df3=df2.drop(df2.columns.difference(df1.columns),axis=1)
df1=df1[namediff].merge(df3,on='id')

df1=df1.set_index('id')
df1.update(df2.set_index('id'))
df1.reset_index(inplace=True)