2013-08-05 218 views
3

可以说我有一个如下的DataFrame。熊猫Dataframe groupby显示

 A  B 
0 text1 200 
1 text2 200 
2 text1 400 
3 text2 500 
4 text1 300 
5 text1 600 
6 text2 300 

我想打印输出如下

 A    B 
0 text1,text2 200 
2 text1   400 
3 text2   500 
4 text1,text2 300 
5 text1   600 

没有订单,我只是想好好列“A”文字标签​​在“B”列匹配的值。据我所知,这必须使用df.groupby来完成。任何方式都没有成功,我的努力呢。希望你能得到我的问题。

回答

7

可以plain ol' sum做到这一点:

In [11]: df.groupby('B').sum() 
Out[11]: 
       A 
B 
200 text1text2 
300 text1text2 
400  text1 
500  text2 
600  text1 

你可以使用一个aggregatejoin

In [12]: df.groupby('B').agg(lambda x: ', '.join(x.values)) 
Out[12]: 
       A 
B 
200 text1, text2 
300 text1, text2 
400   text1 
500   text2 
600   text1 
+0

一如往常你的答案是短甜美优雅.. :)谢谢工作完美。 –

+1

此外,*接近*变换:'df.groupby('B')。transform(','.join)'(本来会更优雅)......很高兴帮助! –