#pandas #pandas-groupby
Вопрос:
Я потратил на это несколько часов, так что любая помощь была бы потрясающей!
У меня есть фрейм данных pandas df. Затем я группируюсь по одному из столбцов (А), фокусируюсь на другом столбце (Б) и получаю среднее значение для каждой группы:
group_mean = df.groupby('A').B.agg('mean')
group = df.groupby('A').B
В том же порядке, что и выше, это типы отчетов python:
<class 'pandas.core.series.Series'>
<class 'pandas.core.groupby.generic.SeriesGroupBy'>
Теперь вопрос, как я могу для каждой группы в «группе» определить индекс первого элемента, который равен или больше среднего. Другими словами, если в группе есть элементы 5, 3, 7, 9, 1, 10 и среднее значение равно 8, я хочу вернуть значение 3 (указать на «9»).
Результатом может быть другой объект groupby с одним номером на группу (индекс).
Заранее спасибо!
Ответ №1:
Вы можете использовать apply
для проверки для каждой группы значений, превышающих среднее значение, и idxmax
для получения первого истинного значения:
df.groupby('A')['B'].apply(lambda x: x.ge(x.mean()).idxmax())