Короткий ответ
Дубликаты находят через df.duplicated(), которая возвращает True для повторяющихся строк, а удаляют через df.drop_duplicates().
Как это работает подробнее
duplicated() по умолчанию сравнивает все столбцы и помечает True для всех повторных вхождений строки, кроме первого (keep='first'); drop_duplicates() использует ту же логику и возвращает DataFrame без повторов.
Пример кода
Пример Python
import pandas as pd
df = pd.DataFrame({'order_id': [1, 2, 2, 3], 'amount': [100, 50, 50, 70]})
print(df.duplicated().sum()) # 1
clean = df.drop_duplicates()
print(clean)Что использовать на практике
- На практике: перед удалением полезно посчитать df.duplicated().sum(), чтобы понять масштаб проблемы, и посмотреть на сами дубликаты через df[df.duplicated()], чтобы убедиться, что это действительно ошибка, а не легитимные одинаковые записи (например, два одинаковых заказа в один день — если они действительно разные события).
- Проверка: duplicated().sum() равен 1, а итоговый DataFrame содержит 3 строки вместо исходных 4.
Подводные камни
- Частые ошибки: удаляют дубликаты сразу без анализа причины их появления (повторная загрузка файла, джойн с размножением), из-за чего настоящая причина ошибки остаётся незамеченной; не указывают keep и не задумываются, какую из дублирующихся строк оставить, если они отличаются во времени обновления.