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

Дней с предыдущего заказа клиента

Условие

Дан список заказов [order_id, user, ts], ts строка YYYY-MM-DD, порядок произвольный. Для каждого заказа посчитайте, сколько дней прошло с предыдущего заказа того же клиента (по времени; при одинаковой дате раньше идёт меньший order_id). Верните [[order_id, days], ...], отсортированный по order_id; для первого заказа клиента days = None.

Примеры

days_since_prev([[1, "a", "2026-01-01"], [2, "b", "2026-01-03"], [3, "a", "2026-01-10"], [4, "b", "2026-01-04"]]) // [[1, null], [2, null], [3, 9], [4, 1]]
days_since_prev([[1, "a", "2026-03-05"]]) // [[1, null]]
days_since_prev([[3, "x", "2026-02-10"], [2, "x", "2026-02-01"], [1, "x", "2026-01-31"]]) // [[1, null], [2, 1], [3, 9]]

Как подойти

Подсказки: 2
  1. groupby("user")["ts"].diff()
  2. Не забудьте pd.to_datetime и сортировку.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.