Python 如何使用groupby附加列表?ValueError:函数未减少

Python 如何使用groupby附加列表?ValueError:函数未减少,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有以下数据帧: df=pd.DataFrame({'code1':["A","B","A"],"code2":["k","l","k"],'Names':[['EUGENIO NETO','JUAN MATIAS SERAGOPIAN'],['EUGENIO LUPORINI NETO'],['SIMONE FANKHAUSER','ALEX SOUZA']]}) code1 code2 Names 0 A

我有以下数据帧:

df=pd.DataFrame({'code1':["A","B","A"],"code2":["k","l","k"],'Names':[['EUGENIO NETO','JUAN MATIAS SERAGOPIAN'],['EUGENIO LUPORINI NETO'],['SIMONE FANKHAUSER','ALEX SOUZA']]})

  code1 code2                                   Names
0     A     k  [EUGENIO NETO, JUAN MATIAS SERAGOPIAN]
1     B     l                 [EUGENIO LUPORINI NETO]
2     A     k         [SIMONE FANKHAUSER, ALEX SOUZA]
我想按
code1
code2
进行分组,并组合
名称中的列表。在某种程度上,它看起来像这样:

  code1 code2  Names
0     A     k  [EUGENIO NETO, JUAN MATIAS SERAGOPIAN, SIMONE FANKHAUSER, ALEX SOUZA]
1     B     l  [EUGENIO LUPORINI NETO]
已检查以下答案:

因此,我试图根据我的情况调整这些问题的答案(但未能解决):

我是错过了什么还是错了

编辑

Andrej和NYC Coder确实提出了功能解决方案。但当我在一个更大的数据集中运行时,我得到了相同的
ValueError:Function不减少
。研究了这可能是什么,发现了这个问题:

选择的答案建议使用元组,因为列表是有问题的。另一个答案解释了熊猫代码中发生的情况。元组是最好的方法吗?如何在这里应用

print( df.groupby(['code1', 'code2'], as_index=False).agg('sum') )
印刷品:

  code1 code2                                              Names
0     A     k  [EUGENIO NETO, JUAN MATIAS SERAGOPIAN, SIMONE ...
1     B     l                            [EUGENIO LUPORINI NETO]

编辑:具有
itertools.chain
的解决方案:

from itertools import chain

df=pd.DataFrame({'code1':["A","B","A"],"code2":["k","l","k"],'Names':[['EUGENIO NETO','JUAN MATIAS SERAGOPIAN'],['EUGENIO LUPORINI NETO'],['SIMONE FANKHAUSER','ALEX SOUZA']]})
print( df.groupby(['code1', 'code2'], as_index=False).agg(lambda x: list(chain.from_iterable(x))) )
这应该做到:

df['Names'] = df['Names'].agg(lambda x: ','.join(map(str, x)))
df = df.groupby(by=['code1', 'code2'], as_index=False).agg('sum')
print(df)



  code1 code2                                              Names
0     A     k  EUGENIO NETO,JUAN MATIAS SERAGOPIANSIMONE FANK...
1     B     l                              EUGENIO LUPORINI NETO

您使用的熊猫是什么版本?@ScottBoston 0.25这是正确的,但当我在更大的数据集中运行它时,我得到:ValueError:函数不会减少。你知道它可能是什么吗?只是添加了一个编辑,上面有一个关于that@abutremutante你能试试df.groupby(['code1',code2',as_index=False).agg(lambda x:sum(x,[])
?或者
df.groupby(['code1','code2'],as_index=False).agg(lambda x:list(itertools.chain.from_iterable(x))
Sweet。非常好用TKSThank,确实有效,但当我在一个更大的数据集中运行它时,我会看到ValueError:函数不会减少。刚刚添加了一个编辑,其中有一个答案是关于这一点的,谢谢,它可以工作,但我想加入列表而不是字符串的原因是我想在将其转换为字符串之前删除已加入列表的副本。。。不幸的是,有了这个解决方案,我无法做到这一点
df['Names'] = df['Names'].agg(lambda x: ','.join(map(str, x)))
df = df.groupby(by=['code1', 'code2'], as_index=False).agg('sum')
print(df)



  code1 code2                                              Names
0     A     k  EUGENIO NETO,JUAN MATIAS SERAGOPIANSIMONE FANK...
1     B     l                              EUGENIO LUPORINI NETO