python - 为什么我的 pandas 过滤器在单独的步骤中工作,而不是在一个命令中工作?
问题描述
我在一个命令中过滤我的 pandas 数据帧时遇到问题。例如,以下多步过滤器可以完美运行:
check2020 = check[check['effyear'] == '2020']
check2020_can = check2020[check2020['canceled'] == 'Y']
check2020_can_6 = check2020_can[check2020_can['decile'] == 6]
check2020_can_6_p_s = check2020_can_6[(check2020_can_6['usage'] == 'P') | (check2020_can_6['usage'] == 'S')]
但是,如果我要执行以下操作:
check[(check['effyear'] == '2020') & (check['canceled'] == 'Y') & (check['decile'] == 6) & (check['usage'] == 'P') | (check['usage'] == 'S')]
然后我又得到了 30,000 个观察结果,这些观察结果并不都遵循过滤器。多合一过滤器是否结构不正确?
解决方案
我相信你需要额外的括号:
check[(check['effyear'] == '2020') &
(check['canceled'] == 'Y') &
(check['decile'] == 6) &
((check['usage'] == 'P') | (check['usage'] == 'S')) # () here
]
此外,使用isin
更好的语法:
check[(check['effyear'] == '2020') &
(check['canceled'] == 'Y') &
(check['decile'] == 6) &
check['usage'].isin(['P', 'S']) # this
]
推荐阅读
- python - 将数字格式应用于 pandas.io.formats.style.Styler 以导出到 excel
- reactjs - 为 React App 创建可维护的身份验证系统
- flutter - Flutter:处理 LongPressed 和 LongPressDraggable 的 GestureDetector
- python - 如何“忽略”使用 Python-Mockito 的方法?
- java - 忽略硒中的加载
- sql - 获取某一列不重复的所有行
- c# - WPF:如何从我的控件触发我的视图模型中 INotifyPropertyChanged 项目的 PropertyChanged?
- bluetooth-lowenergy - ESP32 深度睡眠 - BLE
- javafx - 调用相同代码后 JavaFX 节点大小变化
- pytorch - 当标签为 logits 时,应如何创建 WeightedRandomSampler 的权重以进行对象检测?