Вы можете попробовать следующий код:
Импортировать пакеты
import pandas as pd
from fuzzywuzzy import fuzz
Прочитать два файла CSV:
df1 = pd.read_csv(''Documents/test_CSV_1.csv')
df2 = pd.read_csv('Documents/test_CSV_2.csv')
Создать пустой список
matched_names = []
Напишите Fuzzywuzzy, соответствующий коду
for row1 in df1.index:
name1 = df1.get_value(row1,"Name1") #Name1 is the column name of df1 of an entity to be matched
for row2 in df2.index:
name2= df2.get_value(row2,"Name2") #Name2 is the column name of df2 of entity to be matched
matched_token=fuzz.partial_ratio(name1,name2)
if matched_token> 80: #This is the threshold, you can change according to your neds
matched_names.append([name1,name2,matched_token])
Запишите список в df и csv:
df_partial_ratio = pd.DataFrame(columns=['name1', 'name2','matched_token'], data=matched_names)
df_partial_ratio.to_csv("Output.csv", encoding='utf-8')
В качестве альтернативы вы также можете использовать следующие функции, такие как fuzz.ratio
и fuzz.token_sort_ratio
в соответствии с вашими данными и потребностями.Эти функции можно использовать, просто изменив строку в коде, как показано ниже:
matched_token=fuzz.ratio(name1,name2)
matched_token=fuzz.token_sort_ratio(name1,name2)