我有两个数据帧:df1
和df2
。 df1
具有列id
和name
的列。 df2
具有id
和firstname
。我想将id
中的所有df1
与id
中存在的df2
进行比较,为了匹配,想通过{的值来更新/覆盖firstname
列name
中的{1}}列。
我尝试的代码是:
df1
答案 0 :(得分:0)
您可以定义序列映射,然后使用pd.Series.map
:
id_name_map = df2.set_index('id')['firstname']
df1['name'] = df1['id'].map(id_name_map).fillna(df1['name'])
或者如果您需要反过来这样做:
id_name_map = df1.set_index('id')['name']
df2['firstname'] = df2['id'].map(id_name_map).fillna(df2['firstname'])
在每种情况下,我们使用fillna
来确保id
不匹配不会导致名称被覆盖。