Как рассчитать коэффициент нечеткости между двумя столбцами? - PullRequest
1 голос
/ 07 января 2020

Начало работы с Pandas.

I have two columns:
A                     B
Something             Something Else
Everything            Evythn
Someone               Cat
Everyone              Evr1

Я хочу вычислить коэффициент нечеткости для каждой строки между двумя столбцами, чтобы на выходе было что-то вроде этого:

A                     B                  Ratio
Something             Something Else     12
Everything            Evythn             14
Someone               Cat                10
Everyone              Evr1               20

Как бы я смог это сделать? Оба столбца находятся в одном и том же df.

1 Ответ

3 голосов
/ 07 января 2020

Используйте лямбда-функцию с DataFrame.apply:

from fuzzywuzzy import fuzz

df['Ratio'] = df.apply(lambda x: fuzz.ratio(x.A, x.B), axis=1)
#alternative  with list comprehension
#df['Ratio'] = [fuzz.ratio(a, b) for a,b in zip(df.A, df.B)]
print (df)
            A               B  Ratio
0   Something  Something Else     78
1  Everything          Evythn     75
2     Someone             Cat      0
3    Everyone            Evr1     50

РЕДАКТИРОВАТЬ:

Если возможно, некоторые пропущенные значения в столбцах не удалось, поэтому добавлено DataFrame.dropna:

print (df)
            A               B
0   Something  Something Else
1  Everything             NaN
2     Someone             Cat
3    Everyone            Evr1

from fuzzywuzzy import fuzz

df['Ratio'] = df.dropna(subset=['A', 'B']).apply(lambda x: fuzz.ratio(x.A, x.B), axis=1)
print (df)
            A               B  Ratio
0   Something  Something Else   78.0
1  Everything             NaN    NaN
2     Someone             Cat    0.0
3    Everyone            Evr1   50.0
...