Ввод:
df = pd.DataFrame({'district' : pd.Series(['Bulambuli', 'Kampla', 'Uttah', 'Bulambuli district'])})
df
district
0 Bulambuli
1 Kampla
2 Uttah
3 Bulambuli district
Просто возвращает ближайший:
def fuzzy_replace(x, names):
aliases = difflib.get_close_matches(x, names)
closest = pd.Series(aliases).mode()
closest = aliases[0] if closest.empty else closest[0]
return closest
df["district"].apply(lambda x: fuzzy_replace(x, df['district']))
Выход:
0 Bulambuli
1 Kampla
2 Uttah
3 Bulambuli
Строка Bulambuli
возвращается функцией, поскольку это наиболее близкое значение к Bulambuli district
в df.