Как сравнить каждую строку из одного кадра данных со всеми строками из другого кадра данных и рассчитать меру расстояния? - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть два разных кадра данных клиента, и я хотел бы сопоставить их на основе матрицы расстояний Жакара или любого другого метода.

df1

 Name     country            cost
    0    raj  Kazakhstan     23
    1    sam      Russia     243
    2  kanan     Belarus     2
    3    Nan         Nan     0

df2

   Name     country   DOB
0   rak  Kazakhstan   12-12-1903
1   sim      russia   03-04-1994
2   raj     Belarus   21-09-2003
3  kane     Belarus   23-12-1999

Вывод:

если значение сравнения строк больше> 0,6, я хотел бы объединить обе строки в новом кадре данных.

Df3 ​​

    Name     country   Name  country     cost   DOB
0    raj  Kazakhstan   rak   Kazakhstan  23     12-12-1903
1    sam      Russia   sim   russia      243    03-04-1994
2  kanan     Belarus   Kane  Belarus     2      23-12-1999

Я пытался вычислить каждую строку для каждой строки, но не как сравнить каждую строку с целыми строками из одного в другой фрейм данных?

1 Ответ

0 голосов
/ 24 декабря 2018

Я хотел бы использовать fuzzywuzzy

from fuzzywuzzy import process

df1['key'] = df1.sum(1)
df2['key'] = df2.sum(1)


def yoursource(x):
    if [process.extract(x, df2.key.tolist(), limit=1)][0][0][1]>60:
        return [process.extract(x, df2.key.tolist(), limit=1)][0][0][0]
    else :
        return 'notmatch'

df1['key'] = df1.key.apply(yoursource)

После этого мы получаем ключ совпадения, используя merge

df = df1.merge(df2, on='key', how='inner').drop('key',1)
df
  Name_x   country_x Name_y   country_y
0    raj  Kazakhstan    rak  Kazakhstan
1    sam      Russia    sim      russia
2  kanan     Belarus   kane     Belarus
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...