Объедините два кадра данных панд, сохраняя строки с самым высоким рейтингом - PullRequest
0 голосов
/ 06 декабря 2018

df_a и df_b - это два кадра данных, выглядящие следующим образомF сохраняется.Где 'n' соответствует количеству строк, соответствующих каждому уникальному значению A в df_a.

, я хочу, чтобы мой результат выглядел следующим образом

A   B       C      D     E    B_new    F
x1  Apple   0.3   0.9    0.6  Apple   0.3
x1  Orange  0.1   0.5    0.2  Mango   0.2
x2  Apple   0.2   0.2    0.1  Orange  0.3 
x2  Orange  0.3   0.4    0.9  Apple   0.2
x2  Mango   0.1   0.2    0.3  Mango   0.1
x3  Orange  0.3   0.1    0.2  Orange  0.3

1 Ответ

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

Используйте groupby + cumcount для создания идентификатора группы для каждого DataFrame Затем выполните слияние на основе этого и столбца A

dfa['gid'] = dfa.groupby('A').cumcount()
dfb['gid'] = dfb.sort_values('F', ascending=False).groupby('A').cumcount()
dfa.merge(dfb, on=['A', 'gid'], how='left')

Вывод:

    A       B    C    D    E  gid   B_new    F
0  x1   Apple  0.3  0.9  0.6    0   Apple  0.3
1  x1  Orange  0.1  0.5  0.2    1   Mango  0.2
2  x2   Apple  0.2  0.2  0.1    0  Orange  0.3
3  x2  Orange  0.3  0.4  0.9    1   Apple  0.2
4  x2   Mango  0.1  0.2  0.3    2   Mango  0.1
5  x3  Orange  0.3  0.1  0.2    0  Orange  0.3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...