在同一列上应用两个过滤器


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().

如何组合这两个过滤器?

您的意思是使用mask | mask1(按位)还是) ?当您同时选择年龄小于40岁和大于50岁时,没有返回数据是正常的,这是不兼容的。

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

最新更新