2015-10-06 135 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

这是因为结果是一个系列,所以没有列名。如果您需要,我已经添加了一个保留列名的方法。 –

相关问题