根据 Pandas DataFrame 中的 IQR 分数过滤掉行

Filtering out rows based on an IQR score in Pandas DataFrame

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

以上是我的代码,其中returns: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),因为您的代码已经 returns 一个 Series 布尔值。

其他点,可以替换为:

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

这可能更具可读性。