我有这个{
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
我错过什么了吗?为什么它不起作用?我以前使用过聚合函数,它返回的是一个列表,而不是聚合的唯一值本身,但由于某种原因,这个函数失败了
注意:我知道如何用更多的代码行来避免这个问题,但我想知道为什么这个聚合会因为这个原因失败
正如@Andrej Kesely所指出的,通过将pandas升级到版本
1.3.1
解决了这个问题相关问题 更多 >
编程相关推荐