比较两个数据帧并更新第一个数据帧中的一列

2024-09-24 02:13:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧:df1df2df1idnamedf2idfirstname。我想将df1的所有iddf2中的id进行比较,对于匹配项,我想用df1name列的值更新/覆盖firstname

我试过的代码是:

df1.loc[df1.id.isin(df2.id),[name]]= df2[[firstname]].values

Tags: 数据代码nameidfirstnamelocdf1values
1条回答
网友
1楼 · 发布于 2024-09-24 02:13:48

您可以定义一个序列映射,然后使用^{}

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不会导致名称被覆盖

相关问题 更多 >