pandas Python:类型错误:不可散列类型:groupby清单时为'list'[重复]

l7wslrjt  于 2022-12-09  发布在  Python
关注(0)|答案(1)|浏览(165)

此问题在此处已有答案

Group operations on Pandas column containing lists(2个答案)
How to DataFrame.groupby a field containing list variables(2个答案)
Pandas groupby over list(2个答案)
4天前关闭。
我有以下数据集

df =
value pattern
3     [1,0,0]
4     [1,0,0]
2     [1,0,1]
3     [1,0,1]
5     [1,0,1]

这里的变量模式是一个列表,我们可以看到。我想对每个列表的值进行聚合和求和:

df_output = 
value pattern
7     [1,0,0]
10    [1,0,1]

我尝试了以下方法:

df_output = df.reset_index().groupby('pattern').count()

但我得到以下错误:

TypeError: unhashable type: 'list'

知道如何将groupby()用于列表组合吗?

nxagd54h

nxagd54h1#

将值转换为元组,然后再转换回rename中的列表:

df_output = df.groupby(df['pattern'].apply(tuple)).sum().rename(list).reset_index()

print (df_output)
     pattern  value
0  [1, 0, 0]      7
1  [1, 0, 1]     10

另一个想法是通过sumGroupBy.first的元组进行聚合:

df_output = (df.groupby(df['pattern'].apply(tuple))
               .agg({'value':'sum', 'pattern':'first'})
               .reset_index(drop=True))

print (df_output)
   value    pattern
0      7  [1, 0, 0]
1     10  [1, 0, 1]

相关问题