Выбор ответа Middle groupby и агрегаты обновлено
Топ-N в группе без apply
Вопрос
Как быстро получить два самых дорогих заказа в каждом городе?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: df.sortvalues("amount", ascending=False).groupby("city").head(2). Сначала сортировка по убыванию, затем head(2) в каждой группе: векторизованно и без Python-вызова на группу. max не принимает число строк. agg("nlargest") не сработает: агрегат должен вернуть одно значение. head(2) до сортировки возьмёт…
Варианты ответа
df.groupby("city")["amount"].max(2).reset_index()df.groupby("city")["amount"].agg("nlargest", n=2)df.groupby("city").head(2).sort_values("amount", ascending=False)df.sort_values("amount", ascending=False).groupby("city").head(2)правильный ответ
Разбор
Сначала сортировка по убыванию, затем head(2) в каждой группе: векторизованно и без Python-вызова на группу. max не принимает число строк. agg("nlargest") не сработает: агрегат должен вернуть одно значение. head(2) до сортировки возьмёт первые две строки в исходном порядке, а не самые дорогие.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «groupby и агрегаты»
- groupby: agg или transform
- Почему groupby.apply медленный
- as_index=False в groupby
- Отбор клиентов по условиям на группу
- Выручка и число клиентов по городам на pandas
- Доля заказа в выручке города: transform
- Топ-N заказов в каждом городе на pandas
- dropna=False в groupby