首页 > 解决方案 > 根据 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)]

标签: pythonpandasdataframejupyter

解决方案


您不需要.any(axis=1),因为您的代码已经返回 a Seriesof 布尔值。

另一点,您可以替换:

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

这可能更具可读性。


推荐阅读