首页 > 解决方案 > 如果 Join in pandas 中没有匹配项,则保留一列中的值

问题描述

我有两个表,表 1

id   value
1.   hello | world
1.   hello | world
2.   hello
3.   world
4.   my | universe
5.   world

匹配表 - 表 2

id  value 
1.  hello
2.  hello
4.  universe

如果未找到匹配项,则执行连接并保留旧值后的预期输出

id new_value
1. hello
2. hello
3. world
4. universe
5. world

我如何在熊猫中实现这一点,我是初学者,我可以加入。但是如果没有匹配项,我如何保留旧列中的值。

标签: pythonpandas

解决方案


假设您的数据框分别是 df1 和 df2:

mapper = dict(df2.set_index('id')['value'])
df1['value'] = df1.apply(lambda row: row['value'] if row['id'] not in mapper else mapper[row['id']], axis=1)

df1 = df1.drop_duplicates()

推荐阅读