根据匹配列将数据框填充到另一个重复的数据框

时间:2020-04-10 23:53:35

标签: python pandas dataframe

我有两个相同的df,一个带有数据(重复),另一个没有数据。我们称它们为df1df2。但是,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进行重复数据删除,但是表的大小使我很难知道'm删除正确的值。

1 个答案:

答案 0 :(得分:0)

您可以使用groupby().agg()

df2[['A']].merge(df1.groupby('A', as_index=False)
              .agg(lambda x: ';'.join(x.unique())),
          on='A', how='left'
         )