You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python报错TypeError: unhashable type: 'list',如何按list分组聚合?

解决Pandas中按List类型字段分组的问题

报错原因

你遇到的TypeError: unhashable type: 'list'是因为Python的列表(list)是可变类型,不具备哈希性,而groupby要求分组键必须是可哈希的(比如字符串、元组、数值类型等),直接用list分组会触发这个错误。

解决方案

核心思路是把不可哈希的list转换成可哈希的类型(比如元组tuple),再进行分组操作,最后可按需转回list类型。下面是两种实用的实现方式:

方法一:分组时直接转换为元组

# 按转换后的元组分组,对value求和,重置索引后转回list类型
df_output = df.groupby(df['pattern'].apply(tuple))['value'].sum().reset_index()
df_output['pattern'] = df_output['pattern'].apply(list)
# 调整列顺序匹配目标结果
df_output = df_output[['value', 'pattern']]

方法二:先创建临时元组列再分组

如果需要更直观的步骤,可以先新增元组类型的临时列,分组完成后再清理:

# 新增临时元组列
df['pattern_tuple'] = df['pattern'].apply(tuple)
# 按临时列分组求和
df_output = df.groupby('pattern_tuple')['value'].sum().reset_index()
# 转回list类型并删除临时列
df_output['pattern'] = df_output['pattern_tuple'].apply(list)
df_output = df_output.drop('pattern_tuple', axis=1)[['value', 'pattern']]

注意点

你原来的代码使用了count(),但需求是对value字段求和,所以要替换成sum()才能得到目标结果。

内容的提问来源于stack exchange,提问作者Economist_Ayahuasca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 22:00:52