Объедините DataFrames в нескольких столбцах, чтобы получить точные результаты - PullRequest
0 голосов
/ 07 мая 2018

У меня есть некоторые проблемы с пандами, соединяющими датафреймы. Это расстраивает, потому что он полон ошибок и ошибок. Существует два кадра данных: кадр данных клиента (cust_df) и кадр данных кредитных карт (cc_df). Оба кадра данных содержат: столбец идентификатора, имя, дату рождения, национальный идентификационный номер и номер мобильного телефона. Я хочу получить CUST_ID (из custdf) для каждого CC_ID (из ccdf). Обычно мы можем сделать pd.join, указав ключевые столбцы; однако в этом случае уникальные ключи не являются точными (некоторые из них неверны), поэтому необходимо несколько столбцов. Ниже приведен пример:
Пример данных для cust_df:

CUST_ID , NAME  ,  DOB, NTLNO   , MOBILE  
231412 ,W CUMI  , 17/02/1989 00:00    , 952547890   ,85320818335  
123433 ,S KAMU W  , 28/04/1989 00:00    , 444466213  ,81217354673  
324123 ,K D SUMI    , 05/01/1983 00:00    , 677676999   ,82938489231  
324123 ,M SAMI    , 17/02/1989 00:00    , 657567577  , 81217354674  
231432 ,MOSE N  , 17/02/1989 00:00    , 123423355   ,83320818575  

Пример данных для cc_df:

CC_ID , FNAME,MNAME,LNAME,DOB,NTLNO,MOBILE  
1234    , MOSE,    NAMU,        ,17/02/1989 00:00 ,   123423355,   83320818575  
2345    , MAWON,       ,SAMI,    17/02/1989 00:00,    657567577,   81217354674  
3243    , KOME,    DODO,    SUMI,    05/01/1983 00:00,    76999,   82938489331  
4365    , SAPI,    KAMU,    WEWE ,   28/04/1989 00:00 ,   444466213,   81217354673  
4534    , WAKU,    CUMI,        ,17/02/1989 00:00 ,   52547890,    85320818335  

Проблемы:
1. Имя. В cc_df имена разделяются, а в cust_df имена объединяются, иногда в краткой форме. Пример: Суми Куми -> С Куми.
2. NTLNO & MOBILE NTLNO и MOBILE являются уникальными идентификаторами, но из-за неправильного ввода некоторые из них являются неправильными.

Какой самый точный способ получить CUST_ID для каждого CC_ID?

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете использовать merge_asof :

cust_df.sort_values(by='MOBILE', inplace=True)
cc_df.sort_values(by='MOBILE', inplace=True)

pandas.merge_asof(cc_df, cust_df, on='MOBILE', direction='nearest')

Для работы этого метода необходимо отсортировать ключи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...