2013-08-05 204 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)'(本來會更優雅)......很高興幫助! –