python - 根据 Pandas DataFrame 中的 IQR 分数过滤掉行
问题描述
df_boyd_out = df_boyd[~((df_boyd['MTTR'] < (Q1 - 1.5 * IQR)) | (df_boyd['MTTR'] > (Q3 + 1.5 * IQR))).any(axis=1)]
以上是我的代码,它返回:ValueError: No axis named 1 for object type Series
我试过了:
df_boyd_out = df_boyd[~((df_boyd.MTTR < (Q1 - 1.5 * IQR)) | (df_boyd.MTTR > (Q3 + 1.5 * IQR))).any(axis=1)]
解决方案
您不需要.any(axis=1)
,因为您的代码已经返回 a Series
of 布尔值。
另一点,您可以替换:
~((df_boyd.MTTR < (Q1 - 1.5 * IQR)) | (df_boyd.MTTR > (Q3 + 1.5 * IQR)))
经过:
df_boyd.MTTR.between(Q1 - 1.5 * IQR, Q3 + 1.5 * IQR)
这可能更具可读性。
推荐阅读
- c++ - 与 Qt Creator 捆绑在一起的 clang-tidy [clang-diagnostic-error]
- html - 有没有办法仅在 bulma css 框架中更改移动设备的填充值?
- blender - 镜面材质无法正确显示反射
- svelte - 在 SvelteKit 中设置 SSG 和 Prerender
- spring - 以编程方式生成多个 bean
- influxdb - 通过线路协议写入 InfluxDB 优于 Json 协议的优势
- ruby-on-rails - 如何修改graphql-ruby中子字段的上下文?
- excel - 如何使 CUBEMEMBER 动态 - 日期
- angular - Angular中子属性的更改检测
- jenkins-pipeline - 更改 Jenkins 流水线中的参数值