Pandas groupby:将不同的值组合到另一列中

NLR*_*NLR 0 python pandas pandas-groupby

我需要按列的子集进行分组,并计算其值的不同组合的数量。但是,还有其他列可能有也可能没有不同的值,我想以某种方式在输出中保留这些信息。这是一个例子:

gb1          gb2         text1   text2
bebop        skeletor    blue    fisher
bebop        skeletor    blue    wright
rocksteady   beast_man   orange  haldane
rocksteady   beast_man   orange  haldane
tokka        kobra_khan  green   lande
tokka        kobra_khan  red     arnold
Run Code Online (Sandbox Code Playgroud)

只想gb1按和进行分组gb2

这是我需要的:

gb1          gb2         count   text1        text2
bebop        skeletor    2       blue         fisher, wright
rocksteady   beast_man   2       orange       haldane
tokka        kobra_khan  2       green, red   lande, arnold
Run Code Online (Sandbox Code Playgroud)

除了处理text1text2列之外,我已经完成了所有工作。

提前致谢。

WeN*_*Ben 5

您可以检查

s=df.assign(count=1).groupby(['gb1','gb2']).agg({'count':'sum','text1':lambda x : ','.join(set(x)),'text2':lambda x : ','.join(set(x))}).reset_index()
s
          gb1         gb2  count      text1          text2
0       bebop    skeletor      2       blue  wright,fisher
1  rocksteady   beast_man      2     orange        haldane
2       tokka  kobra_khan      2  green,red   lande,arnold
Run Code Online (Sandbox Code Playgroud)