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

时间:2019-01-30 13:25:27

标签: python python-3.x pandas

我有两个数据帧:df1df2df1具有列idname的列。 df2具有idfirstname。我想将id中的所有df1id中存在的df2进行比较,为了匹配,想通过{的值来更新/覆盖firstnamename中的{1}}列。

我尝试的代码是:

df1

1 个答案:

答案 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不匹配不会导致名称被覆盖。