2024-09-24 02:13:48 发布
网友
我有两个数据帧:df1和df2df1有id和name列df2有id和firstname。我想将df1的所有id与df2中的id进行比较,对于匹配项,我想用df1中name列的值更新/覆盖firstname列
df1
df2
id
name
firstname
我试过的代码是:
df1.loc[df1.id.isin(df2.id),[name]]= df2[[firstname]].values
您可以定义一个序列映射,然后使用^{}:
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不会导致名称被覆盖
fillna
您可以定义一个序列映射,然后使用^{} :
或者如果你需要反过来做:
在每种情况下,我们都使用
fillna
来确保不匹配的id
不会导致名称被覆盖相关问题 更多 >
编程相关推荐