Pandas中基于不同名称列合并DataFrame并保留指定列
解决方法
你的代码报错有两个核心问题:
- DF2中不存在
ID列,你试图提取这个列会触发KeyError;DF2里和DF1的ID对应的关联字段是hiring_manager_id。 - 两个表的关联字段名称不一致,不能直接用
on='ID'参数,需要分别指定左右表的关联字段。
正确代码示例
# 从DF2中选择需要的列(包含关联字段hiring_manager_id) df2_selected = df2[['hiring_manager_id', 'hire_type', 'hiring_status', 'hiring_phase']] # 执行左连接,指定左右表的关联字段 merged_df = pd.merge(df1, df2_selected, left_on='ID', right_on='hiring_manager_id', how='left') # 可选:删除多余的hiring_manager_id列 merged_df = merged_df.drop('hiring_manager_id', axis=1)
代码说明
left_on='ID':指定DF1中用于关联的字段是IDright_on='hiring_manager_id':指定DF2中用于关联的字段是hiring_manager_idhow='left':保留DF1的所有行,匹配不到DF2数据的行用NaN填充,和你想要的结果逻辑一致
执行后得到的结果与你预期完全匹配:
Name ID Job_Type Emp_Type hire_type hiring_status hiring_phase 0 Adam 101 Full-Time Employee Employee Pending Requested 1 Adam 101 Full-Time Employee Employee Approved Hired 2 Ben 102 Part-Time Contractor NaN NaN NaN 3 Cathy 103 Part-Time Employee NaN NaN NaN 4 Doug 104 Full-Time Contractor NaN NaN NaN 5 Emily 105 Full-Time Employee Contractor Approved Approved
内容的提问来源于stack exchange,提问作者Coding_Nubie
相关产品推荐
相关产品推荐

