我正在尝试根据其他数据框中的值替换数据框中的值。请假设两个数据框中还有其他列。一个简单的例子:
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
上的匹配将第二个数据帧中的值替换为第一个数据帧中的所有值?
感谢您的帮助
答案 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)