如何用数量可变的列条件自动过滤Pandas DataFrame?
自动化实现Pandas DataFrame多列过滤(适配Pandas 1.0.3)
可以完全自动化实现,无需手动逐个指定列名,用Pandas内置的eq()和any()方法即可解决,代码如下:
filters = ['col_43', 'col_44', 'col_45', ...] # 生成过滤掩码:每行任意指定列等于'Y' mask = df[filters].eq('Y').any(axis=1) filtered_df = df[mask]
逻辑说明
df[filters]:直接选中列表中所有指定列,自动适配列表长度变化.eq('Y'):对选中的每一列逐行判断是否等于'Y',返回布尔类型的DataFrame.any(axis=1):按行检查是否至少有一个列满足等于'Y'的条件,最终生成一维布尔序列作为过滤规则
如果你的需求是**所有指定列都等于'Y'**才保留行,只需把any()换成all():
mask = df[filters].eq('Y').all(axis=1) filtered_df = df[mask]
该方案完全兼容Pandas 1.0.3版本,不管filters列表包含多少列,都能自动处理。
内容的提问来源于stack exchange,提问作者Treasure Hunter
相关产品推荐
相关产品推荐

