Выбор ответа Junior Окна и сдвиги спрашивают часто обновлено

shift без groupby

Вопрос

В таблице заказов, отсортированной по user и ts, посчитали df["prev_ts"] = df["ts"].shift(1). В чём ошибка?

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

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

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

Коротко

Правильный ответ: Первый заказ клиента получит дату заказа предыдущего клиента. Обычный shift ничего не знает о клиентах и сдвигает по всей таблице, протаскивая значения через границы групп.

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

  1. Первый заказ клиента получит дату заказа предыдущего клиентаправильный ответ
  2. shift не работает с датами, нужно сначала перевести в числа
  3. Нужно было shift(-1), чтобы взять предыдущий заказ клиента
  4. Ошибки нет: сортировки по user и ts для этого достаточно

Разбор

Обычный shift ничего не знает о клиентах и сдвигает по всей таблице, протаскивая значения через границы групп. Нужен df.groupby("user")["ts"].shift(1): у первого заказа каждого клиента будет NaT. С датами shift работает, а shift(-1) даст следующий заказ, а не предыдущий.

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

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