[英]Pandas groupby: combine distinct values into another column
我需要按列的子集進行分組,並計算其值的不同組合數。 但是,還有其他列可能具有也可能沒有不同的值,因此我想以某種方式將此信息保留在輸出中。 這是一個例子:
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
我只是想通過組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
除了處理text1
和text2
列之外,我已完成所有工作。
提前致謝。
您可以檢查
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
如果df
是您的原始數據幀:
def combine(xx):
dd = xx.transform(lambda x : ','.join(set(x)))
dd['count'] = len(xx)
return dd
ddf = df.groupby(['gb1', 'gb2']).apply(combine)
對於您的示例數據幀, ddf
為:
text1 text2 count
gb1 gb2
bebop skeletor blue fisher,wright 2
rocksteady beast_man orange haldane 2
tokka kobra_khan red,green lande,arnold 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.