Python中如何将一个DataFrame的ID匹配到另一个DataFrame的Name
问题解决:通过Name匹配DataFrame的ID值
问题场景
有两个DataFrame:
- DF1包含
ID和Name字段 - DF2仅包含
Name字段
需要根据Name字段将DF1中的ID匹配到DF2中,无匹配项的ID值设为Null。
DF1示例
ID Name 1 John Doe 2 Mary Sue 3 Josh Smith 4 Sarah Moore
DF2示例
Name Sarah Moore John Doe Josh Smith Mary Sue Josh Gordon
期望输出
ID Name 4 Sarah Moore 1 John Doe 3 Josh Smith 2 Mary Sue NA Josh Gordon
错误代码分析
你之前尝试的代码存在参数错误:
df2 = df2.merge(df2,df1['ID'], on = 'Name', how = 'left')
这里第一个参数误写为df2(应该是df1),且不需要单独提取df1['ID'],直接传入完整的DF1即可。
正确解决方法
使用merge方法的左连接(how='left'),以DF2为基准保留所有记录,匹配DF1中对应的ID:
df_result = df2.merge(df1, on='Name', how='left')
说明
how='left':确保DF2的所有Name记录都被保留,即使在DF1中没有匹配项- 无匹配的
ID会自动填充为NaN(对应你需求中的Null) - 执行后得到的结果与你期望的输出完全一致
内容的提问来源于stack exchange,提问作者Coding_Nubie
相关产品推荐
相关产品推荐

