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
相关产品推荐
相关产品推荐

