df.duplicated().sum() # полностью одинаковые строки
df.duplicated(subset='order_id').sum() # повторы order_id
Результат:
4 12
dups = df.duplicated(subset=['user_id', 'date'], keep=False)
df.loc[dups, ['user_id', 'date', 'amount']].sort_values('user_id').head(4)
Результат:
user_id date amount 3 42 2026-01-05 1200.0 7 42 2026-01-05 300.0 15 88 2026-01-06 450.0 22 88 2026-01-06 450.0Порешать Python-задачи в тренажёре →
Используют для аудита выгрузок (не задвоились ли заказы после join), поиска повторных регистраций и подготовки к drop_duplicates. На собеседовании просят объяснить разницу keep='first' и keep=False.
Передайте keep=False: тогда True получат все строки, у которых есть хотя бы одна копия. Это удобно, чтобы вывести полный набор задвоенных записей на проверку. При keep='first' первая копия осталась бы непомеченной.
Укажите subset со списком колонок, например subset=['user_id', 'date']. Тогда совпадение проверяется только по ним, а остальные колонки игнорируются. Без subset учитываются все колонки строки.
duplicated возвращает булеву маску и ничего не удаляет, а drop_duplicates сразу возвращает датафрейм без дублей. Маску удобно использовать, чтобы сначала посмотреть на дубли, а потом решить, что с ними делать. По сути drop_duplicates — это фильтрация по ~duplicated.
Pandas: основы · Pandas groupby
groupby · merge · pivot_table · apply · value_counts · drop_duplicates
Открыть Python-тренажёр (556 задач) →