Как удалить дубликаты после объединения двух данных? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть два кадра данных,

A= 
ID compponent weight
12  Cap        0.4
12  Pump       183
12  label      0.05
14  cap        0.6 

B=
ID compponent_B weight_B
12  Cap_B       0.7
12  Pump_B       189
12  label      0.05


, когда я объединяю эти два кадра данных на основе идентификатора в качестве ключа, я получаю


ID component weight component_B  weight_B
12  Cap        0.4   Cap_B        0,7
12  Cap        0.4   Pump_B       189
12  Cap        0.4   label        0.05
12  Pump       183   Cap_B        0,7
12  Pump       183   Pump_B       189
14  Pump       183   label        0.05
...

Я понимаю, что тот факт, что у меня есть один идентификатор на 3 строки, генерирует 9 строк, если я делаю слияние, но как я могу сохранить только три строки без потери информации, если я сделаю drop_duplicates для компонента, я потеряю информацию о component_B. я хочу что-то вроде:


ID component weight  component_B  weight_B
12  Cap        0.4    Cap_B        0,7
12  Pump       183    Pump_B       189
12  labeL      0,05   label        0.05


кто-нибудь знает, как это сделать?

1 Ответ

1 голос
/ 16 апреля 2020

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

dfm = dfA.assign(cc=dfA.groupby('ID').cumcount())\
         .merge(dfB.assign(cc=dfB.groupby('ID').cumcount()), 
                on=['ID', 'cc'], how='outer')
print (dfm)
   ID compponent  weight  cc compponent_B  weight_B
0  12        Cap    0.40   0        Cap_B      0.70
1  12       Pump  183.00   1       Pump_B    189.00
2  12      label    0.05   2        label      0.05
3  14        cap    0.60   0          NaN       NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...