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

pandas如何忽略0值拼接混合数据类型的多列生成新列

实现代码

你只需在原有拼接逻辑前增加0值过滤规则即可,同时可根据需求兼容数值/字符串格式的0,以及类型判断:

方案1:基于原有代码小幅修改

保留你原本的dropna逻辑,新增过滤规则:

cols=['col1','col2', 'col3', 'col4', 'col5']
# 仅拼接非空、非0的字符串类型元素
df2["col6"] = df2[cols].apply(
    lambda x: ';'.join([val for val in x.dropna() if isinstance(val, str) and val != '0']), 
    axis=1
)
# 如果不需要排除数值类型,仅需要过滤0,可简化为:
# df2["col6"] = df2[cols].apply(lambda x: ';'.join([val for val in x.dropna() if val not in (0, '0')]), axis=1)

方案2:大体积DataFrame优化方案

当数据量较大时,使用向量化操作代替逐行apply,性能提升明显:

cols=['col1','col2', 'col3', 'col4', 'col5']
# 先将所有0值替换为空
tmp = df2[cols].replace([0, '0'], '')
# 按行拼接后清理多余分号
df2['col6'] = tmp.agg(';'.join, axis=1).str.replace(r';+', ';', regex=True).str.strip(';')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 10:36:03