Объединение фреймов данных в столбце с частичным совпадением строкиPython

Программы на Python
Ответить
Anonymous
 Объединение фреймов данных в столбце с частичным совпадением строки

Сообщение Anonymous »

Я пытаюсь объединить два фрейма данных в столбце «Имя». Имена относительно одинаковые. Объединение не работает, так как между именами имеются расхождения из-за специальных символов, отсутствующих суффиксов и псевдонимов. Есть идеи?
df1




Имя
Производительность




Мэтт Коул-младший
89


Стив Смит
72


DJ Watson
91


Амарье Джордж
92


Стив Нуркич
84


Чарльз Лонг
87


Ник Китч
73




df2




Имя
Год




Мэтт Коул младший
2023


Стив Смит III
2022


Д.Дж. Уотсон
2021


Амаре Джордж
2020


Стив Нуркич
2021


Чарльз Лонг-младший
2022


Николас Китч
2023




Желаемый результат:




Имя
Год
Работа




Мэтт Коул-младший
2023
89


Стив Смит III
2022
72


Д.Дж. Уотсон
2021
91


Амаре Джордж
2020
92


Стив Нуркич
2021
84


Чарльз Лонг-младший
2022
87


Николас Китч
2023
73




Я думал, что это может сработать, но выполнение кода занимало слишком много времени:

Код: Выделить всё

from fuzzywuzzy import process

dfm = pd.DataFrame(df2["Name"].apply(lambda x: process.extractOne(x, df1["Name"])) .tolist()])
Я тоже попробовал это, но имена не совпадали правильно:

Код: Выделить всё

import difflib
from functools import partial
#the below function is inspired from https://stackoverflow.com/a/56521804/9840637
def get_closest_match(x,y):
"""x=possibilities , y = input"""
f = partial(
difflib.get_close_matches, possibilities=x.unique(), n=1,cutoff=0.5)

matches = y.astype(str).drop_duplicates().map(f).fillna('').str[0]
return pd.DataFrame([y,matches.rename('Name')]).T

temp = get_closest_match(df2['Name'],df1['Name'])
display(temp)
Есть идеи? Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/764 ... tial-match
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»