Я пытаюсь найти количество похожих слов для всех строк в Dataframe1 для каждой отдельной строки со словами в Dataframe 2.
На основе сходства я хочу создать новый фрейм данных с where
столбцы = N строк кадра данных2
значения = сходство.
Мой текущий код работает, но работает очень медленно.Я не уверен, как его оптимизировать ...
df = pd.DataFrame([])
for x in range(10000):
save = {}
terms_1 = data['text_tokenized'].iloc[x]
save['code'] = data['code'].iloc[x]
for y in range(3000):
terms_2 = data2['terms'].iloc[y]
similar_n = len(list(terms_2.intersection(terms_1)))
save[data2['code'].iloc[y]] = similar_n
df = df.append(pd.DataFrame([save]))
Обновление: новый код (все еще работает медленно)
def get_sim(x, terms):
similar_n = len(list(x.intersection(terms)))
return similar_n
for index in icd10_terms.itertuples():
code,terms = index[1],index[2]
data[code] = data['text_tokenized'].apply(get_sim, args=(terms,))