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

根据列取值将符合条件的列名拼接生成新数据列

实现方案

基于Python的Pandas库可以高效实现这个需求,无需手写逐行遍历循环,代码可维护性更高。

首先构造和示例一致的测试数据:

import pandas as pd

df = pd.DataFrame({
    'id': [1, 2, 3, 4, 5, 6],
    'col1': [0, 1, 0, 1, 2, 0],
    'col2': [1, 2, 1, 1, 2, 1]
})

核心处理逻辑如下,先指定需要参与值校验的列范围,再分别匹配值为1、2的列名做拼接:

# 所有需要做值判断的列,后续新增判断列直接往这个列表加即可
check_columns = ['col1', 'col2']

# 生成ones列:收集当前行值为1的列名,用逗号+空格拼接
df['ones'] = df[check_columns].apply(
    lambda x: ', '.join([col for col in check_columns if x[col] == 1]),
    axis=1
)

# 生成twos列:收集当前行值为2的列名,用逗号+空格拼接
df['twos'] = df[check_columns].apply(
    lambda x: ', '.join([col for col in check_columns if x[col] == 2]),
    axis=1
)

运行后输出的结果和预期完全匹配:

idcol1col2onestwos
101col2
212col1col2
301col2
411col1, col2
522col1, col2
601col2
  • 拼接分隔符可以按需调整,比如不需要逗号后的空格,直接把', '.join改成','.join即可
  • 无匹配值的行会自动留空,不需要额外做判空处理
  • 百万行级别的超大数据集可以替换为numpy向量化实现,常规业务数据量下上面的写法可读性更好,性能完全够用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 19:03:32