Слияние двух разных фреймов с пандами - PullRequest
0 голосов
/ 23 мая 2018

Я новичок в пандах, мне нужно выполнить следующую задачу, есть ли эффективный способ сделать это?Существует два разных кадра данных: dfa и dfb: dfa

dfb

Я использовал это для их объединения:

df = pd.merge(dfa, dfb, left_on = ['a_retry','a_cca', 'a_rssif', 'a_lqif'], right_on = ['b_retry','b_cca', 'b_rssif', 'b_lqif'])

Я получил вывод df: df

Однако это не мое ожидание.Объединенный информационный кадр содержит все столбцы, это нормально, но строки не должны превышать меньший (aka. Dfa), это означает, что строка 3 должна быть удалена, ожидаемый: enter image description here Какмогу ли я сделать это?Спасибо.

1 Ответ

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

Ожидается, потому что дубликаты на все 4 столбца.

Поэтому нужно удалить дубликаты строк на drop_duplicates:

dfa = dfa.drop_duplicates(subset=['a_retry','a_cca', 'a_rssif', 'a_lqif'])
dfb = dfb.drop_duplicates(subset=['b_retry','b_cca', 'b_rssif', 'b_lqif'])

Но если нужно сопоставить дубликатыстрок, возможно ли с новым столбцом cumcount, который используется для merge:

dfa['new'] = dfa.groupby(['a_retry','a_cca', 'a_rssif', 'a_lqif']).cumcount()
dfb['new'] = dfb.groupby(['b_retry','b_cca', 'b_rssif', 'b_lqif']).cumcount()

df = (pd.merge(dfa, 
               dfb, 
               left_on = ['a_retry','a_cca', 'a_rssif', 'a_lqif', 'new'], 
               right_on = ['b_retry','b_cca', 'b_rssif','b_lqif', 'new']).drop('new', axis=1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...