python - 在同一列上应用两个过滤器
问题描述
data = [ 23, 50, 32, 21, 24, 20, 68, 52, 41, 44, 29, 70, 33, 56, 72]
df = pd.DataFrame(data, columns = ['age'])
尝试将列过滤到年龄等于或介于范围(mask
和mask1
)之间的行
使用单个范围会返回我需要的部分内容......
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
推荐阅读
- android - NavigationDrawer 中原始实例的片段替换
- python-3.x - 来自 panda 数据帧的 Matplotlib 图例和颜色图
- android - 如何防止在mediapipe android中绘制人脸检测边界框
- sql - 如何对 Postgresql 的嵌套数据进行连接操作
- kubernetes - Kubernetes 错误:- 服务器没有资源类型“日志”
- python - 我无法将表格保存到 csv 文件
- selenium-webdriver - 运行代码时获取 java.lang.NullPointerException
- python - 在函数执行时使用装饰器打印点
- python - background_task_completedtask 不存在
- python - Pip freeze 在 conda 环境中生成'@file:///'