Заполнить фрейм данных на основе сопоставления столбцов с другим фреймом данных с дубликатами - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть два идентичных dfs, один с данными (и дубликатами), другой без данных. Давайте назовем их df1 и df2. Однако df2 имеет те же значения, что и df1, только что дедуплицированный.

df1
  A    B    C            D    E
1 1    X1   Company X    JB   PhD
2 2    Y2   Company Y    RA   MsC
3 33   W2   Company W    JK   MsC
4 156  Z1   Company Z    SS   PhD
5 156  Z1   Company Z    SS   MsC 

df2 
  A    B    C            D    E
1 1    
2 2    
3 33   
4 156  

Я пытаюсь отобразить значения в других столбцах на основе первого столбца df2. Но я хочу объединить уникальные значения в каждом столбце для каждой дублируемой строки в df1, как показано ниже

df2
  A    B    C            D    E
1 1    X1   Company X    JB   PhD
2 2    Y2   Company Y    RA   MsC
3 33   W2   Company W    JK   MsC
4 156  Z1   Company Z    SS   PhD;MsC

Имейте в виду, что в каждом df есть 27 столбцов, и каждая дублированная строка для столбца 1 имеет только одно уникальное значение для этой строки. Я попал сюда, потому что пытался дедуплицировать df1, используя смесь .drop_duplicates() & .unique() для столбцов в df1, но размер таблиц затрудняет понимание того, что я отбрасываю правильные значения.

1 Ответ

0 голосов
/ 11 апреля 2020

Вы можете обойтись с groupby().agg():

df2[['A']].merge(df1.groupby('A', as_index=False)
              .agg(lambda x: ';'.join(x.unique())),
          on='A', how='left'
         )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...