2015-10-06 125 views
3

這是我的數據框:如何在pandas數據框中使用groupby時連續設置?

> df 
     a    b 
    0 1   set([2, 3]) 
    1 2   set([2, 3]) 
    2 3  set([4, 5, 6]) 
    3 1 set([1, 34, 3, 2]) 

現在,當我groupby,我想更新套。如果這是一個list沒有問題。但我的命令的輸出是:

> df.groupby('a').sum() 

a   b     
1    NaN 
2  set([2, 3]) 
3 set([4, 5, 6]) 

我應該怎麼做groupby更新集?我在尋找的輸出如下:

a   b     
1  set([2, 3, 1, 34]) 
2  set([2, 3]) 
3  set([4, 5, 6]) 

回答

6

這可能是接近你想要

df.groupby('a').apply(lambda x: set.union(*x.b)) 

什麼在這種情況下,採取集合的並集。

如果您需要保留的列名,你可以使用:

​​

結果:

a b 
0 1 set([1, 2, 3, 34]) 
1 2 set([2, 3]) 
2 3 set([4, 5, 6]) 
+0

謝謝,它解決了設置問題,但列名更名爲0。爲什麼會發生? – ALH

+0

這是因爲結果是一個系列,所以沒有列名。如果您需要,我已經添加了一個保留列名的方法。 –

相關問題