首页 > 解决方案 > 在同一列上应用两个过滤器

问题描述

data = [ 23, 50, 32, 21, 24, 20, 68, 52, 41, 44, 29, 70, 33, 56, 72]
df = pd.DataFrame(data, columns = ['age'])

尝试将列过滤到年龄等于或介于范围(maskmask1)之间的行

使用单个范围会返回我需要的部分内容......

mask = (df['age'] >= 30) & (df['age'] <=40)
df = df.loc[mask]

但是,当我尝试将它与另一个过滤器结合使用时,不会返回任何数据......

mask1 = (df['age'] >= 50) & (df['age'] <=60)
df = df.loc[mask & mask1]

我也试过:

df = df.loc[mask or mask1]

但是,这会产生以下错误ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

如何组合这两个过滤器?

感谢您花时间阅读。

标签: pythonpandasfilter

解决方案


你的意思是使用mask | mask1(按位)?40岁以下和50岁以上都是不兼容的,不返回数据是正常的。

>>> df.loc[mask | mask1]
    age
1    50
2    32
7    52
12   33
13   56

推荐阅读