Фильтрация строк на основе оценки IQR в фрейме данных Pandas

#python #pandas #dataframe #jupyter

Вопрос:

 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)]
 

Ответ №1:

Вам это не нужно .any(axis=1) , так как ваш код уже возвращает 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)
 

что, вероятно, более читабельно.