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

pandas如何提取相似列中非NaN值合并为对应统一字段列

Pandas 合并同类型带_x/_y后缀字段的实现方案

核心思路

对每个字段的_x、_y两个版本,按行取非NaN值合并,Pandas内置方法可以非常简洁的实现这个需求,两种常用实现方式如下:


方式1:combine_first实现(适合仅两组后缀的场景)

该方法逻辑明确,优先取_x列的值,_x列为空时自动取_y列的非空值填充,完全匹配你的需求:

import pandas as pd

# 定义需要合并的字段前缀列表
merge_fields = ["countrycode", "statename", "statecode"]

# 遍历逐个合并字段
for field in merge_fields:
    # combine_first会自动用第二个列的非空值填充第一个列的空值
    df[field] = df[f"{field}_x"].combine_first(df[f"{field}_y"])

# 过滤保留合并后的三个新字段,删除原始带后缀字段
result_df = df[merge_fields]

如果需求是优先取_y列的值,调整为df[f"{field}_y"].combine_first(df[f"{field}_x"])即可。


方式2:列分组实现(适合多后缀的通用场景)

如果后续后缀不止_x/_y两种,用列分组按前缀聚合的方式扩展性更强:

# 按列名的前缀(下划线前的部分)分组,每组按行取第一个非空值
result_df = df.groupby(lambda col_name: col_name.split("_")[0], axis=1).first()
# 按需要的字段顺序调整即可
result_df = result_df[["countrycode", "statename", "statecode"]]

两种方法运行后得到的result_df就是你给出的预期输出结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:06:08