С помощью пушек и панд вы можете получить ожидаемый результат.
1) начните со сбора ваших библиотек и данных:
import pandas as pd
from fuzzywuzzy import fuzz
mapping = pd.read_excel('Book1.xlsx', sheet_name='mapping')
instance = pd.read_excel('Book1.xlsx', sheet_name='instance')
2) создайте список уникальных значений ваших областей:
unique_area = instance['Area'].drop_duplicates(keep='first').values.tolist()
3) создайте пустой фрейм данных и запустите для каждой области следующий код:
fuzzed_data = []
for i in unique_area:
instanceunique = instance[instance['Area'] == i]
unique_list = mapping[mapping['Area'] == i]['Name'].drop_duplicates(keep='first').values.tolist()
instance_score = instanceunique[['Locale']]
for i in unique_list:
ratiofuzz = []
for index, row in instance_score.iterrows():
ratiofuzz.append(fuzz.ratio(row['Locale'], i))
instance_score[i] = ratiofuzz
scores = instance_score.drop(['Locale'], axis=1)
instance_score['mapping'] = scores.idxmax(axis=1)
instanceunique = pd.merge(instanceunique
, instance_score[['Locale', 'mapping']]
, how='left'
, on=['Locale'])
fuzzed_data.append(instanceunique)
4) Объединить «размытые» данные:
fuzzed_data = pd.concat(fuzzed_data, axis=0)
Вот и все!
Дай мне знать, если тебе еще понадобится помощь.
BR