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