You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas基于IQR分数过滤DataFrame行时报axis 1相关ValueError如何解决

错误成因
  • 你通过df_boyd['MTTR']/df_boyd.MTTR取到的是一维Series对象,只有行索引一个维度,没有列维度的概念,axis=1是专门给DataFrame用的参数,代表按行维度做聚合,Series对象根本不支持该参数。
  • 你的业务逻辑是判断单MTTR列的每行数值是否属于异常区间,计算后得到的本身就是长度和行数一致的布尔Series,完全不需要调用any()聚合方法,多余的any(axis=1)是报错的直接来源。
修复方案

直接删除多余的.any(axis=1)即可,正确代码如下:

df_boyd_out = df_boyd[~((df_boyd['MTTR'] < (Q1 - 1.5 * IQR)) | (df_boyd['MTTR'] > (Q3 + 1.5 * IQR)))]

如果后续需要对多列做异常值过滤,比如同时判断MTTR、MTBF两列的异常,此时得到的是多列布尔值组成的DataFrame,才需要用any(axis=1)按行聚合判断是否存在任意一列异常,示例如下:

# 多列异常过滤示例
df_boyd_out = df_boyd[~(
    ((df_boyd['MTTR'] < (Q1_mttr - 1.5 * IQR_mttr)) | (df_boyd['MTTR'] > (Q3_mttr + 1.5 * IQR_mttr))) |
    ((df_boyd['MTBF'] < (Q1_mtbf - 1.5 * IQR_mtbf)) | (df_boyd['MTBF'] > (Q3_mtbf + 1.5 * IQR_mtbf)))
).any(axis=1)]

内容的提问来源于stack exchange,提问作者JRT5933

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:24:02