You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何合并不同形状、列名的数据集并填充NaN

解决两个数据集合并填充NaN的问题

核心逻辑:利用职位编号作为唯一关联键,将DF2的姓名信息匹配到DF1中,同时保留DF1的原有数据结构。

步骤1:统一关联键的数据类型

关联失败导致NaN残留的常见原因是键的类型不匹配(比如DF1是整数、DF2是带前导零的字符串),先统一两者的类型:

import pandas as pd

# 将DF1的mgr_pos_num转为字符串
DF1['mgr_pos_num'] = DF1['mgr_pos_num'].astype(str)
# 将DF2的emp_pos_num转为字符串(确保前导零等格式一致)
DF2['emp_pos_num'] = DF2['emp_pos_num'].astype(str)

步骤2:左连接两个数据集

用左连接保留DF1的所有行,同时匹配DF2中对应的姓名信息:

merged_df = pd.merge(
    DF1, 
    DF2, 
    left_on='mgr_pos_num',  # DF1的关联键
    right_on='emp_pos_num', # DF2的关联键
    how='left'              # 保留DF1的全部数据
)

步骤3:调整为目标数据集格式

重命名列、统一EmpType值、调整列顺序:

# 重命名列以匹配目标格式
merged_df = merged_df.rename(columns={
    'Mgr_name': 'Name',
    'emp_Name': 'emp_name'
})

# 将EmpType统一改为'MGR'
merged_df['EmpType'] = 'MGR'

# 调整列顺序到目标要求
final_df = merged_df[['ID', 'Name', 'Reports', 'EmpType', 'emp_name', 'emp_pos_num']]

残留NaN排查

如果处理后仍有NaN,检查以下两点:

  • DF1中的mgr_pos_num是否在DF2的emp_pos_num中全部存在?若有缺失值,需补充DF2的对应数据。
  • 关联键是否存在格式差异?比如字符串的空格、大小写、特殊字符,需提前清洗(用str.strip()等方法)。

处理后的最终数据集示例:

ID       Name        Reports        EmpType       emp_name    emp_pos_num
  101      NaN           3               MGR          John         1234
  102      Brian         4               MGR          Brian        4567
  103      Mary          7               MGR          Mary         9876
  104      NaN           1               MGR          Sarah        3456
  ...
  201      Ashely        2               MGR          Ashely       4291
  202      Blake         5               MGR          Blake        7215

内容的提问来源于stack exchange,提问作者Coding_Nubie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:42:46