根据另一列中的组在Pandas Dataframe中隐藏由分隔符分隔的一列值

问题描述 投票:-1回答:2

我有一个如下所示的数据框:

   # df

    colA       colB      

   rqqrs        vqtr            
   MNO          vqtr 
   japl         vqtr
   nsam2        raqm        
   many         3tyua
   3juaik7      3tyua
   janit        yua7us  

我希望从此数据框中获得的结果是将colA的行合并在一起在ColB中具有相同的值。例如在上表中的前三行应该合并为单行,因为这些行的ColB的所有值都相同。

因此输出应如下所示(定界符可以是分号或:&等,在下面的示例中,我使用的是:&)

# newdf:

   colA                    coLB     

  rqqrs;& MNO;& japl       vqtr
  nsam2                    raqm
  many ;& 3juaik7          3tyua
  janit                    yua7us

老实说,我对如何实现这一目标并不了解。我尝试按ColB对旧数据框进行分组,然后将ColB唯一条目用作字典中的键,并尝试将ColA条目放入值中。

但是,似乎没有任何作用。如果我可以得到一些帮助,那将非常有帮助。

pandas dictionary group-by subset
2个回答
1
投票

我们可以用aggjoin

df.groupby('colB').colA.agg(' ;&'.join)
colB
3tyua         many ;&3juaik7
raqm                   nsam2
vqtr      rqqrs ;&MNO ;&japl
yua7us                 janit
Name: colA, dtype: object

1
投票

或者,您可以将'groupby'与'apply(list)'结合使用。 '.unique()'确保元素仅列出一次:

df_grouped=df.groupby('colB')['colA'].unique().apply(list)
© www.soinside.com 2019 - 2024. All rights reserved.