【问题标题】:Aggregate function that retuns a list in Pandas results in ValueError: Must produce aggregated value在 Pandas 中返回列表的聚合函数导致 ValueError:必须生成聚合值
【发布时间】:2021-10-27 23:40:28
【问题描述】:

我有这个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

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

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

【问题讨论】:

标签: python pandas dataframe aggregate-functions


【解决方案1】:

正如@Andrej Kesely所指出的那样,通过将pandas升级到1.3.1版本解决了

【讨论】:

    猜你喜欢
    • 2017-06-20
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 2017-09-02
    • 1970-01-01
    • 2018-09-05
    • 2023-03-07
    相关资源
    最近更新 更多