Выбор ответа Middle groupby и агрегаты обновлено

Оставить группы по условию

Вопрос

Нужно оставить все заказы только тех клиентов, у которых не меньше трёх заказов. Какой вариант верный?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: df.groupby("user").filter(lambda g: len(g) = 3). filter оставляет строки групп, для которых функция вернула True, исходные строки сохраняются.

Варианты ответа

  1. df.groupby("user").filter(lambda g: len(g) >= 3)правильный ответ
  2. df[df.groupby("user").size() >= 3].reset_index()
  3. df[df.groupby("user")["amount"].count() >= 3]
  4. df.groupby("user").head(3).reset_index(drop=True)

Разбор

filter оставляет строки групп, для которых функция вернула True, исходные строки сохраняются. Вариант с size() >= 3 вернёт булеву Series по клиентам, а не заказы. Маска из count() имеет индекс клиентов и не выровняется со строками. head(3) просто обрежет каждую группу до трёх строк. Быстрая альтернатива filter: df[df.groupby("user")["user"].transform("size") >= 3].

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме