pandas - fuzzywuzzy - ускорение зацикливания при выполнении fuzzymatching? - PullRequest
0 голосов
/ 12 сентября 2018

Я в основном пытаюсь объединить 2 кадра данных, используя приблизительное совпадение. Как я это делаю в общем, указано ниже:

  • есть список строк для сопоставления
  • определить функцию, используя fuzzy's process.extract
  • применить эту функцию ко всем строкам в первом кадре данных, чтобы получить совпадение
  • объединить 1-й DF со 2-м DF на основе соответствующего ключа.

Это мой код:

def closest_match(x):
    matched = (process.extract(x, matchlist[matchlist.match_name.str.startswith(x[:3])].match_name, limit=1, scorer=fuzz.token_sort_ratio))
    if matched:
        print(matched[0])
        return matched[0][0]
    else:
        return None


df1['key'] = df1.df1_name.apply(lambda x: closest_match(x))
# merge with 2nd df
joined = df1.merge(df2, left_on='key', right_on='df2_name')

Проблема здесь в скорости. Этот код занимает очень много времени для циклов 10000 итераций. И мне нужно это для 100K матча. Как ускорить этот код?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...