Pandas 基于另一列中的组,在Dataframe中使用分隔符分隔一列值

Pandas 基于另一列中的组,在Dataframe中使用分隔符分隔一列值,pandas,dictionary,group-by,subset,Pandas,Dictionary,Group By,Subset,我有一个如下所示的数据框: # df colA colB rqqrs vqtr MNO vqtr japl vqtr nsam2 raqm many 3tyua 3juaik7 3tyua janit yua7us 我希望从这个数据框中得到的是把一排可乐拼凑在一起

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

   # df

    colA       colB      

   rqqrs        vqtr            
   MNO          vqtr 
   japl         vqtr
   nsam2        raqm        
   many         3tyua
   3juaik7      3tyua
   janit        yua7us  
我希望从这个数据框中得到的是把一排可乐拼凑在一起 在ColB中具有相同的值。例如,在上表中,前三行 应该作为单行使用,因为这些行的ColB的所有值都相同

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

老实说,对于如何实现这一点,我没有太多的想法。我尝试按ColB对旧数据帧进行分组,然后使用ColB唯一项作为字典中的键,并尝试将ColA项放入值中


然而,这些似乎都不起作用。如果我能得到一些帮助,那将非常有帮助。

我们可以通过
加入
来做
agg

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

我们可以使用
join

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

或者,您可以将“groupby”与“apply(list)”一起使用。“.unique()”确保元素只列出一次:

df_grouped=df.groupby('colB')['colA'].unique().apply(list)

或者,您可以将“groupby”与“apply(list)”一起使用。“.unique()”确保元素只列出一次:

df_grouped=df.groupby('colB')['colA'].unique().apply(list)

非常感谢。工作得很有魅力!非常感谢。工作得很有魅力!