如何使用pandas合并两个缺失值互补的DataFrame列
Pandas 互补缺失值两列合并方案
针对你提到的两列缺失值完全互补的场景,有两种简洁实现方式:
方法1:combine_first() 实现(推荐)
该方法原生适配两列互补填充需求,优先取第一个列的非空值,空缺位置自动取第二个列的对应非空值:
# 合并生成新列 merged_col df['merged_col'] = df['source_app_packets'].combine_first(df['source_app_packets.1']) # 可选操作:删除原有两列、释放存储空间 df = df.drop(columns=['source_app_packets', 'source_app_packets.1'])
如果你的数据中缺失值用空字符串、空格等非常规标识存储,需要先转换为pandas可识别的NaN格式再执行合并:
import numpy as np # 将空字符串替换为NaN df[['source_app_packets', 'source_app_packets.1']] = df[['source_app_packets', 'source_app_packets.1']].replace('', np.nan) # 执行合并 df['merged_col'] = df['source_app_packets'].combine_first(df['source_app_packets.1'])
方法2:fillna() 实现
逻辑为用第二列的非空值填充第一列的空缺位置,实现效果和第一种方法完全一致:
df['merged_col'] = df['source_app_packets'].fillna(df['source_app_packets.1'])
结果验证
合并完成后可执行以下代码检查是否还有遗漏的缺失值,符合你场景的前提下输出应为0:
print(df['merged_col'].isna().sum())
内容的提问来源于stack exchange,提问作者Joe Piccini
相关产品推荐
相关产品推荐

