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

Python pandas合并多列为单列并忽略NaN与空值的实现方法

问题根源

直接对全列执行astype(str)时,pandas会把缺失值NaN转为字符串'nan',空字符串也会完整保留,拼接后自然会出现多余的nan和空格。


可行解决方案

方案1(兼容性最佳,适配所有pandas版本)

通过apply逐行过滤无效值后拼接,代码逻辑简单易懂:

df['abc'] = df[['a', 'b', 'c']].apply(
    lambda row: ' '.join([val for val in row.astype(str) if val not in ('', 'nan')]),
    axis=1
)

运行后自动过滤空字符串、NaN转成的无效'nan'字符串,无有效内容的行最终输出为空字符串,完全匹配预期结果。

方案2(性能更优,适合万行以上大数据量)

先统一预处理无效值,再批量拼接降低遍历开销:

# 先把所有缺失值、空字符串统一处理
tmp_df = df[['a', 'b', 'c']].fillna('').replace('', pd.NA)
# 按行拼接自动跳过空值
df['abc'] = tmp_df.agg(lambda x: x.str.cat(sep=' '), axis=1)

注意:如果业务场景中存在合法的字符串'nan'需要保留,请使用方案2,避免方案1误删有效内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 05:48:01