Я действительно технически не разбираюсь, но пытаюсь работать с некоторыми данными.
Есть ли способ выполнить нечеткое сопоставление x строк по обе стороны от этого индекса и исключить себя?
Например, 2 пробела по обе стороны от заданной строки.
Это значительно сократит время моих вычислений, а также будет более эффективным, поскольку данные несколько отсортированы.
Это код, который я сейчас have, однако при этом каждая запись будет сравниваться с каждой другой записью, включая себя.
def fuzzy_merge(df1, df2, key1, key2, threshold=89, limit=1):
s = df2[key2].tolist()
m = df1[key1].apply(lambda x: process.extract(x, s, limit=limit))
df1['matches'] = m
m2 = df1['matches'].apply(lambda x: ', '.join([i[0] for i in x if i[1] >= threshold]))
df1['matches'] = m2
return df1, df1.to_csv('bigtest.csv')
fuzzy_merge(df1.loc[0:1000,], df1.loc[0:1000,], 'test', 'test', threshold=89, limit =1)