Более быстрая версия средства сравнения последовательностей difflib для сравнения строк по большому набору данных - PullRequest
0 голосов
/ 26 июня 2019

У меня есть фрейм данных, состоящий из 13 столбцов и 37000 строк, которые проверяются с помощью одного и того же фрейма данных для столбцов, состоящих из всех строк.

В настоящее время я выполняю циклы для и get_value для сравнения значений в фрейме данных.Функция слияния панд невозможна из-за несогласованности данных.Цель состоит в том, чтобы получить все значения, которые соответствуют> 90 в difflib

count=len(df)

for i in range(count):

    for j in range(count):

        a=str(df.get_value(i,'A')).lower()

        b=str(df.get_value(j,'A')).lower()

        vicode=str(df.iloc[i][0])

        vjcode=str(df.iloc[j][0])

        seq=difflib.SequenceMatcher(None, a,b)

        d=seq.ratio()*100

        if(d > 90 and vicode != vjcode):

                list_card.append([d,vicode,vjcode,a])

Ожидаемый результат намного медленнее и для него требуется более быстрая версия.

...