Aggregate function that retuns a list in Pandas results in ValueError: Must produce aggregated value

Aggregate function that retuns a list in Pandas results in ValueError: Must produce aggregated value

我有这个pd.DataFrame:

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'])

我想按 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:

然而,当我这样做时:

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

显示此错误:

ValueError: Must produce aggregated value

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

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

通过将 pandas 升级到版本 1.3.1 解决,如 @Andrej Kesely

所指出