Python:类型错误:不可散列类型:分组时为"列表"



我有以下数据集

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()与列表的组合?

将值转换为元组,然后返回到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]

最新更新