这是我的数据帧:
> 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])
Run Code Online (Sandbox Code Playgroud)
现在,当我groupby,我想更新集.如果它是一个list没有问题.但我的命令输出是:
> df.groupby('a').sum()
a b
1 NaN
2 set([2, 3])
3 set([4, 5, 6])
Run Code Online (Sandbox Code Playgroud)
我应该怎么做groupby更新集?我正在寻找的输出如下:
a b
1 set([2, 3, 1, 34])
2 set([2, 3])
3 set([4, 5, 6])
Run Code Online (Sandbox Code Playgroud)
这可能接近你想要的
df.groupby('a').apply(lambda x: set.union(*x.b))
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它需要集合的并集.
如果您需要保留可以使用的列名:
df.groupby('a').agg({'b':lambda x: set.union(*x)}).reset_index('a')
Run Code Online (Sandbox Code Playgroud)
结果:
a b
0 1 set([1, 2, 3, 34])
1 2 set([2, 3])
2 3 set([4, 5, 6])
Run Code Online (Sandbox Code Playgroud)