在Pandas中重新运行列表的聚合函数将导致ValueError:必须生成聚合值

2024-05-28 20:25:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个{}:

import pandas as pd

df = pd.DataFrame({
    'A': [2400, 2400, 2400, 2401, 2401],
    'B': [0,1,2,0,1],
    'val': [[], [], [], ['val1', 'val2'], ['val1']],
}).set_index(['A', 'B'])

enter image description here

我想按A分组,然后使用以下函数链接列表中的所有val值:

from itertools import chain
def _flattened_set(list_list_elements):
    return list(set(chain.from_iterable(list_list_elements)))

print(_flattened_set([[], [], []]))
>>> []

print(_flattened_set([['val1', 'val2'], ['val1']]))
>>> ['val2', 'val1']

因此,在groupby之后,我期望得到这个pd.DataFrame

enter image description here

然而,当我这样做时:

df.groupby(level=0).aggregate({'val': _flattened_set})

它显示了这个错误:

ValueError: Must produce aggregated value

我错过什么了吗?为什么它不起作用?我以前使用过聚合函数,它返回的是一个列表,而不是聚合的唯一值本身,但由于某种原因,这个函数失败了

注意:我知道如何用更多的代码行来避免这个问题,但我想知道为什么这个聚合会因为这个原因失败


Tags: 函数fromimportchaindataframedf列表val

热门问题