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

Python实现:为DataFrame每行生成非零值对应列名拼接字符串

实现Pandas DataFrame生成非零列名列拼接的新列

现有如下Pandas DataFrame:

import pandas as pd

df0 = pd.DataFrame({'points': [0, 0, -3, 16, 0, 5, -3, 14],
                    'assists': [0, 0, 2, 0, 1, -7, 0, 6],
                    'numbers': [0, 0, 1, 6, 10, 5, 8, 7]})

需求是新增一列colX,规则为:

  • 每行非零值对应的列名用连字符-拼接成字符串
  • 若整行所有值都是0,则colX填0

实现代码

直接使用apply方法结合lambda表达式就能快速实现:

df0['colX'] = df0.apply(
    lambda row: '-'.join(row.index[row != 0]) if any(row != 0) else 0,
    axis=1
)

代码说明

  1. row != 0:生成当前行的布尔掩码,标记哪些值是非零的
  2. row.index[row != 0]:通过布尔掩码筛选出对应非零值的列名
  3. '-'.join(...):将筛选出的列名用连字符拼接成字符串
  4. if any(row != 0) else 0:判断当前行是否存在非零值,不存在则填0

执行后就能得到符合要求的数据集,colX列完全匹配期望结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:42:12