Выбор ответа Junior groupby и агрегаты спрашивают часто обновлено
groupby: agg или transform
Вопрос
Нужно добавить к каждой строке заказов колонку с суммой заказов её клиента, не меняя число строк. Что выбрать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: df.groupby("user")["amount"].transform("sum"). transform возвращает результат той же длины и с тем же индексом, что исходный DataFrame, поэтому его можно сразу присвоить в колонку. agg("sum") и .sum() дают одну строку на клиента: присвоение в колонку выровняет по индексу и даст NaN или…
Варианты ответа
df.groupby("user")["amount"].transform("sum")правильный ответdf.groupby("user")["amount"].agg("sum")df.groupby("user")["amount"].sum()df.groupby("user").filter(lambda g: g["amount"].sum())
Разбор
transform возвращает результат той же длины и с тем же индексом, что исходный DataFrame, поэтому его можно сразу присвоить в колонку. agg("sum") и .sum() дают одну строку на клиента: присвоение в колонку выровняет по индексу и даст NaN или неверные значения. filter оставляет или выкидывает группы целиком, он не считает суммы.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «groupby и агрегаты»
- as_index=False в groupby
- Отбор клиентов по условиям на группу
- Выручка и число клиентов по городам на pandas
- Доля заказа в выручке города: transform
- Топ-N заказов в каждом городе на pandas
- dropna=False в groupby
- Как работает groupby в pandas
- Оставить группы по условию