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

Python中能否通过列索引组合条件语句简化DataFrame多列判断?

更简洁的批量列条件判断方案

当然有更高效省心的实现方式!当你需要对一整列范围的变量统一应用条件时,完全不用手动写一堆&来拼接每个列的判断,我们可以借助Pandas的向量化特性批量处理,完美适配大量列的场景:

核心思路

先精准选中需要判断的目标列范围(比如所有P开头的列,或者通过位置索引选取),然后用.gt(0)批量判断每个值是否大于0,最后用.all(axis=1)检查每一行的所有目标列是否都满足条件(axis=1表示按行维度判断)。

具体实现方法

针对你的数据集,这里提供两种优化后的简洁写法:

方法1:用np.where批量生成标记

import numpy as np
import pandas as pd

# 选中所有列名包含"P"的列(适配P1、P2...Pn的批量场景)
target_cols = df.filter(like='P')
# 也可以用位置索引精准选取:target_cols = df.iloc[:, 1:]  # 假设Name是第1列,后续都是目标列

df['Check'] = np.where(target_cols.gt(0).all(axis=1), 'Yes', 'No')

方法2:用loc批量赋值(更高效)

先初始化Check列为默认值No,再给满足条件的行批量赋值Yes,适合大型数据集:

df['Check'] = 'No'
target_cols = df.filter(like='P')
df.loc[target_cols.gt(0).all(axis=1), 'Check'] = 'Yes'

效果验证

用你提供的测试数据:

NameP1P2P3
A102
B111
C056

运行上述代码后,最终的Check列结果如下:

NameP1P2P3Check
A102No
B111Yes
C056No

完全匹配你的需求,而且不管后续新增多少个P开头的列,都不用修改条件逻辑,只需要确保目标列选中正确即可!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:14:46