Нахождение первого значения по крайней мере определенного значения

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