Я работал над проектом, в котором я хотел сделать следующее:
- группировать по нескольким столбцам
- вычислить среднее значение для группы
- вернуть самые большие значения на группу
Казалось бы, все просто, потому что я все эти операции ясно себе представлял. Я сделал что-то вроде этого:
new_df = old_df[['Column_1', 'Column_2', 'Column_3']].groupby(['Column_1', 'Column_2'])['Column_3'].mean()
new_df_2 = new_df.reset_index()
nlargest_df = new_df_2.groupby(['Column_1', 'Column_2']).head(3)
Это решение встречается повсюду в inte rnet, как, например, здесь Но, похоже, оно не работает в моем случае. В возвращенном фрейме данных есть все записи для каждой группы, а не только для верхних 3. Поэтому я закончил тем, что создал фрейм данных для каждой группы, отсортировал его по результату агрегации и выбрал заголовок в этом фильтрованном фрейме данных, но это не масштабируется Что если бы у меня было 1000 категорий?