如何高效实现Pandas DataFrame多列多条件数据筛选?
Pandas 多条件筛选简化实现
你可以通过布尔掩码配合pandas内置的行列判断方法大幅简化写法,性能也优于原有多次取子集的实现:
# 拆分条件逻辑,可读性更强 cond1 = df[['A Code', 'B Code']].eq('123').any(axis=1) # A/B列任意一列为123 cond2 = df[['X Code', 'Y Code']].eq('765').any(axis=1) # X/Y列任意一列为765 cond3 = df['H Code'].isin(['EF', 'GH']) # H列属于指定值列表 # 组合条件筛选 result = df[(cond1 & cond2) | cond3]
如果偏好更紧凑的写法也可以直接合并条件:
result = df[((df[['A Code','B Code']].eq('123').any(1)) & (df[['X Code','Y Code']].eq('765').any(1))) | df['H Code'].isin(['EF','GH'])]
写法优势说明
- 原有写法多次对DataFrame取子集后做逻辑运算,存在冗余的索引对齐开销,直接生成布尔掩码的方式执行效率更高
- 用
eq()+any(axis=1)替代多列重复的相等判断,当需要判断的列数增加时优势更明显 - 用
isin()替代多值的或判断,避免重复写==的冗余代码
内容的提问来源于stack exchange,提问作者be84
相关产品推荐
相关产品推荐

