首页 > 解决方案 > 大熊猫中的聚合集

问题描述

我有一张这样的桌子:

col1    col2
a       {...}
a       {...}
b       {...}
c       {...}
c       {...}
c       {...}

哪里col2是由集合组成的。我需要通过集合的col1col2集来聚合。

到目前为止,我最好的尝试是:

def set_union(*sets):
    return reduce(lambda a, b: a.union(b), sets)

mytable.groupby('col1', as_index=False)['equivalente_new'].agg(set_union)

产生:

ValueError:必须产生聚合值

有没有人有任何解决方案?

标签: pythonpandassetpandas-groupbyaggregate

解决方案


删除函数签名中的 splat

def set_union(sets):
    return reduce(lambda a, b: a.union(b), sets)

mytable.groupby('col1', as_index=False).agg(set_union)

  col1       col2
0    a     {1, 2}
1    b        {3}
2    c  {4, 5, 6}

我更喜欢这个(没有减少)

def set_union(sets):
    return set().union(*sets)

mytable.groupby('col1', as_index=False).agg(set_union)

推荐阅读