У меня есть df, который выглядит примерно так:
Name |Address | State | Phone | Website
--------------------------------------------------------
agua calienta |etc etc etc
agua caliente |
blue lake |
blue lake club |
artichoke |
artichoke club |
creek club |
cahuilla creek |
cahuilla crek resort|
taj club |
taj mahal |
taj mahal club hotel|
и т. Д.
Название - это название курорта / отеля, однако в нем есть много опечаток и вариаций названий. данные. Используя расстояние Левенштейна и пакет fuzzywuzzy
, я смог получить все похожие имена, набрав
choices = df['Name'].unique()
def get_ratio(row):
name = row['Name']
return fuzz.token_sort_ratio(name, 'agua caliente')
df[df.apply(get_ratio, axis = 1) > 60]
Затем я мог гипотетически переименовать все имена со счетом выше 60, используя
df.loc[df.apply(get_ratio, axis=1) > 75, "Name"] = "Agua Caliente"
Однако это работает только для 1 имени, которое я использовал.
Есть ли способ применить это ко всем именам, которые похожи?
Например, после применения я получил бы что-то похожее на следующее:
Name |Address | State | Phone | Website
--------------------------------------------------------
Agua Caliente |etc etc etc
Agua Caliente |
Blue Lake Club |
Blue Lake Club |
Artichoke Club |
Artichoke Club |
Creek Club |
Cahuilla Resort |
Cahuilla Resort |
Taj Mahal |
Taj Mahal |
Taj Mahal |
У меня есть список ссылок / таблица всех возможных имен. Как мне выполнить oop и применить функцию get_ratio к go через список и вернуть все похожие имена в списке?