Как сравнить текстовые столбцы в 2 разных фреймах данных для извлечения полных совпадений и частичных совпадений - PullRequest
0 голосов
/ 21 марта 2020

Я довольно новичок в Python и в настоящее время работаю над проектом, в котором у меня есть два кадра данных. Один содержит всех клиентов и один содержит рефералов. Цель состоит в том, чтобы выяснить, кто из упомянутых организаций успешно стал клиентами. У меня нет первичного ключа для работы, и поэтому я должен сделать это, основываясь на следующих полях, которые имеют оба фрейма данных:

Полное имя, электронная почта, номер телефона.

Из исследования я считаю FuzzyWuzzy это лучшая библиотека для использования. Тем не менее, я концептуально застрял в попытке выяснить, как написать код, который будет

A. извлечь все прямые совпадения из 3 полей выше

B. Извлеките все частичные совпадения из полей «Полное имя» и «Электронная почта» (частичные совпадения были бы полезны для извлечения любых потенциальных опечаток)

и предоставьте мне эти результаты в новом фрейме данных.

Я попытался поместить все поля в один файл и получил следующий код, но столкнулся с ошибками

choices = df['Full Name Contact']
query=df['Full name Inquiry']
process.extractOne(query, choices)

TypeError: expected string or bytes-like object

и

df['partial_ratio'] = df.apply(lambda x: fuzz.partial_ratio(x['Full name Inquiry'], x['Full Name Contact']), axis=1)

TypeError: ("object of type 'float' has no len()", 'occurred at index 5550')

Я успешно сделать это на Excel, используя IndexMatch и Vlookup, но это слишком много времени. Особенно при сравнении частичных совпадений по именам.

Любая помощь будет принята с благодарностью. Заранее спасибо!

...