У меня есть DataFrame с информацией о людях, но есть повторяющиеся строки с немного другим адресом.
Как я могу удалить дубликаты на основе нечеткого соответствия или другого способа обнаружения сходства, но гарантируя, что строка с похожим адресом будет удалена только в том случае, если имя и фамилия также совпадают?
Пример данных:
First name | Last name | Address
0 John Doe ABC 9
1 John Doe KFT 2
2 Michael John ABC 9
3 Mary Jane PEP 9/2
4 Mary Jane PEP, 9-2
5 Gary Young verylongstreetname 1
6 Gary Young 1 verylongstretname
(опечатка в названии улицы намеренно)
Код для примера данных:
df = pd.DataFrame([
['John', 'Doe', 'ABC 9'],
['John', 'Doe', 'KFT 2'],
['Michael', 'John', 'ABC 9'],
['Mary', 'Jane', 'PEP 9/2'],
['Mary', 'Jane', 'PEP, 9-2'],
['Gary', 'Young', 'verylongstreetname 1'],
['Gary', 'Young', '1 verylongstretname']
], columns=['First name', 'Last name', 'Address'])
Ожидаемый результат:
First name | Last name | Address
0 John Doe ABC 9
1 John Doe KFT 2
2 Michael John ABC 9
3 Mary Jane PEP 9/2
4 Gary Young verylongstreetname 1
sklearn
CountVectorizer
(2) вычислении матрицы подобия сcosine
расстоянием (3) отбрасывании любых данных, которые имеют сходство в диапазоне 1> сходство> 0,9. Я подозреваю, что для разумного объема данных, скажем, миллионов строк, он должен завершиться в течение нескольких минут. - person Sergey Bushmanov   schedule 22.02.2019