Необходимо достать дубликаты
Коллеги, доброго времени суток. Есть 2 датафрейма за 2 месяца, имеющие данные юзера, необходимо эти 2 датафрейма сравнить и найти юзеров, которые повторяются в 2 месяцах. На данный момент оставил только необходимый столбец и вроде как создал новый столбец со значением(повторяется или нет). Ссылка на исходные данные
m = (october.merge(november, how='outer', on=['Структурная единица'],
suffixes=['', '_new'], indicator=True))
| Структурная единица | _merge |
|---|---|
| 0 Клиент | both |
| 1 ЦСО Тверь | both |
| 2 1760 | left_only |
| 3 1760 | left_only |
| 4 6251 | left_only |
| ... | ... |
| 23984 | Яшкевич Валерий Олегович |
| 23985 | яшкевич вероника |
| 23986 | яшкевич николай |
| 23987 | Яшов Захар Денисович |
| 23988 | Яшова Надия Мусхатовна right_only |
23989 rows × 2 columns
Ещё прикрепляю скриншот таблицы для наглядности, а то не получилось сделать таблицу такой же:
Как я могу вывести в отдельный датафрейм всех повторяющихся пользователей и их
количество?
Ответы (2 шт):
Если нужен перечень уникальных ФИО, которые встречаются и в первом и во втором фрейме, то так:
df = df1.merge(df2, on='Структурная единица', how='inner')['Структурная единица'].drop_duplicates()
Индикатор здесь лишний, достаточно применить аргумент how='inner'. Потом удалить дубликаты.
Если я правильно понимаю, что необходимо найти совпадения по пользователю и общее количество повторений этого пользователя в двух датафреймах, то подойдёт функция с использованием .isin() и value_counts():
def user_counts(df1, df2, column):
return (df1[df1[column].isin(df2[column])][column].value_counts() +
df2[df2[column].isin(df1[column])][column].value_counts()).reset_index()
user_counts(october, november, 'Структурная единица')
Вывод:
Структурная единица count
0 Абаканов Савелий Андреевич 2
1 Абасов Эмиль 2
2 Абашин Роман Владимирович 3
3 Аббасова Диана Дмитриевна 4
4 Абдулин 2
... ... ...
2245 тимофеева алиса николаевна 2
2246 федорова александра андреевна 3
2247 школьников юрий олеговвич 4
2248 шувалов федор александрович 3
2249 янглеев данила артемович 2
2250 rows × 2 columns