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

Pandas中如何跨多列检查不同条件并拼接满足条件的列名

pandas多列独立条件拼接列名实现方案

不需要创建三个持久化的辅助列,直接为每列配置独立判定规则就能完成D列的计算。

简洁版实现(适配小体量数据集)

直接在逐行apply的逻辑中为三列分别配置判定规则,筛选出符合条件的列名后用逗号拼接即可,代码如下:

df['D'] = df[['A', 'B', 'C']].apply(
    lambda row: ','.join([
        col for col, match in [
            ('A', row['A'] == 0),
            ('B', row['B'] > 30),
            ('C', row['C'] == 'Pass')
        ] if match
    ]),
    axis=1
)
  • 三列条件同时命中时,D列返回A,B,C
  • 仅命中A、B列条件时,D列返回A,B
  • 其他命中场景会自动拼接对应列名,无需手写多分支判断

高性能实现(适配大体量数据集)

如果你的数据集行数较多,优先使用pandas向量化运算替代逐行apply,运行效率会有明显提升:

# 构建三列的判定布尔矩阵
cond_df = pd.DataFrame({
    'A': df['A'] == 0,
    'B': df['B'] > 30,
    'C': df['C'] == 'Pass'
})
# 逐行拼接命中条件的列名
df['D'] = cond_df.apply(lambda row: ','.join(row.index[row]), axis=1)

你之前的代码局限性在于给所有列套用了eq(1)的统一判定规则,只要把统一规则替换为每列独立的判定逻辑,就可以跳过繁琐的辅助列创建步骤,直接得到目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:06:18