Вы можете попробовать это,
from fuzzywuzzy import fuzz
def similarity(name1, name2):
return fuzz.token_sort_ratio(name1, name2)
df1['key'] = 1
df2['key'] = 1
merged = df1.merge(df2, on='key')
merged['name_score'] = merged[['name_x', 'name_y']] \
.apply(lambda row: similarity(row['name_x'], row['name_y']), axis=1)
или
from fuzzywuzzy import fuzz
def similarity(name1, name2):
return fuzz.token_sort_ratio(name1, name2)
df1['key'] = 1
df2['key'] = 1
merged = df1.merge(df2, on='key')
scores = list(map(similarity, merged['name_x'], merged['name_y']))
merged['name_score'] = scores