Удаление выбросов по группам на основе iqr

У меня есть df, который содержит следующие переменные:

  • пп (участник)
  • состояние
  • rt (время реакции)

(а также множество других вещей).

Я хочу обрезать выбросы на основе критерия iqr. Однако я хочу сделать это по условию, за стр.

Я полагаю, решение начнется с

grouped = df.groupby(['pp','condition'])

но что потом? Как удалить выбросы по группе? Я использую функцию применения или мне помогает функция фильтра?

предоставить образцы данных вместе с ожидаемым результатом

Sociopath 10.09.2018 10:41
0
1
556
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете сделать что-то вроде этого:

# define a function to filter out your data
def filter_condition(grped_df):
    if some_condition:
        return grped_df[some_condition]
    return grped_df


grouped = df.groupby(by=['pp','condition'])

# use apply to pass each group to your defined function and reset index to remove grouped multi index.

filtered_df = grouped.apply(filter_condition).reset_index(drop=True)

Да, это сработало. Спасибо за совет!

Inkidu616 10.09.2018 13:12

Другие вопросы по теме