python - объединение при частичном сопоставлении строк с использованием SequenceMatcher
Проблема, с которой я имею дело, заключается в том, что я хочу объединить два фрейма данных на основе процентного сходства между строками строк, которые я вызываю с помощью pymssql. Я хочу получить комбинированный фрейм данных, который объединяет строки df2 и df1, только если процентное сходство выше, чем 0,7. Тем не менее, я получаю следующее сообщение об ошибке, если я запускаю код ниже:
> ValueError: Length of values does not match length of index.
Я принял код ниже из аналогичного вопроса, найденного здесь: Использование difflib SequenceMatcher ratio для слияния в Pandas. Есть ли решение для этой ошибки? Заранее спасибо!
# Queries for two dfs
df1 = pd.read_sql("""SOME SELECTION 1""", con = con)
df2 = pd.read_sql("""SOME SELECTION 2""", con = con)
# Make the article title to lower
df1["title1"] = df1.title1.str.lower()
df2["title2"] = df2.title2.str.lower()
# Use sequencematcher for percentage similarity between two strings
from difflib import SequenceMatcher
df1['merge_ti'] = df1['title1'] # We will use these as merge keys
# Loop to merge on similarity
for ti_gs in df1[['title1']].values:
for ti_oi in df2[['title2']].values:
if SequenceMatcher(None, ti_gs, ti_oi).ratio() > .7:
df2[ti_oi,'merge_ti'] = ti_gs # creates a merge key in orcid
# Merge and write to csv
merged_df1_df2 = pd.merge(df1, df2, on = ['merge_ti'], how = 'inner')
merged_df1_df2.to_csv('merge_match.csv', sep='\t')