Выбор ответа Middle Пропуски, дубли и типы спрашивают часто обновлено

Оставить последнюю запись по ключу

Вопрос

В таблице несколько версий профиля пользователя с колонкой updated_at. Как оставить по одной, самой свежей версии на user_id?

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

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

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

Коротко

Правильный ответ: df.sortvalues("updatedat").dropduplicates("userid", keep="last"). Сначала сортируем по времени, затем оставляем последнее вхождение каждого ключа.

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

  1. df.drop_duplicates("user_id", keep="last", ignore_index=True)
  2. df.groupby("user_id").first().reset_index()
  3. df.sort_values("updated_at").drop_duplicates(keep="last")
  4. df.sort_values("updated_at").drop_duplicates("user_id", keep="last")правильный ответ

Разбор

Сначала сортируем по времени, затем оставляем последнее вхождение каждого ключа. Без сортировки drop_duplicates("user_id", keep="last") оставит последнюю по порядку файла строку, а не самую свежую по времени. drop_duplicates(keep="last") без subset даже после сортировки ищет полностью одинаковые строки, разные версии профиля останутся. groupby().first() берёт первое непустое значение по каждой колонке отдельно и может склеить поля из разных версий.

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

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