Функция drop_duplicates() в pandas: удаление дубликатов

df.drop_duplicates(subset, keep) удаляет повторяющиеся строки. Без аргументов сравнивает строки целиком; subset ограничивает набор колонок-ключей; keep выбирает, какую из дублей оставить — первую ('first'), последнюю ('last') или ни одной (False). Аналитик применяет её для очистки данных и «оставить одну запись на ключ».

Синтаксис

df.drop_duplicates(subset='ключ', keep='first'|'last'|False)

Примеры использования

Пример 1: Оставить свежую запись по каждому заказу

(df.sort_values('changed_at')
   .drop_duplicates('order_id', keep='last'))

Результат:

   order_id   status changed_at
2         1  shipped 2026-06-04
4         2 cancelled 2026-06-03

Пример 2: Уникальные пары user-город

df[['user_id', 'city']].drop_duplicates()

Результат:

(по одной строке на уникальную пару)
Порешать Python-задачи в тренажёре →

Типичная ошибка

keep='last' работает правильно только если данные предварительно отсортированы по времени — иначе «последняя» будет случайной. Для «самой свежей записи» сначала sort_values по дате, потом drop_duplicates. keep=False удаляет ВСЕ строки, у которых есть дубль (полезно найти уникальные-в-единственном-числе). Функция смотрит на значения, а не на индекс.

Где спрашивают на собеседовании

drop_duplicates спрашивают в задачах на дедупликацию и «оставь одну строку на ключ». На собеседовании ценят связку sort_values + drop_duplicates(keep='last') как pandas-аналог SQL ROW_NUMBER() ... WHERE rn = 1.

FAQ: частые вопросы про drop_duplicates

Как оставить самую свежую строку по ключу?

Сначала df.sort_values('дата'), затем drop_duplicates(subset='ключ', keep='last'). Порядок важен: keep='last' берёт последнюю строку после сортировки.

Что делает keep=False?

Удаляет все строки, у которых есть хотя бы один дубль по ключу, оставляя только строки-одиночки. Удобно, чтобы найти уникальные записи.

Как посчитать число дублей?

df.duplicated(subset=...).sum() вернёт количество дублирующихся строк (по умолчанию не считая первое вхождение).

Задачи в тренажёре по теме

Вопросы с собеседований по теме

Смежные темы Python

Pandas: основы

Другие функции pandas

groupby · merge · pivot_table · apply · value_counts · fillna

Открыть Python-тренажёр (556 задач) →