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

Pandas按独热编码列分组报错:TypeError: unhashable type: 'list'

解决DataFrame按独热编码列表分组的TypeError问题

你遇到的TypeError: unhashable type: 'list'是因为列表是可变类型,无法被计算哈希值,而groupby要求分组键必须是可哈希的(比如整数、字符串、元组这类不可变类型)。下面给出两种可行的解决方法:

方法1:将列表转为元组

把class列里的列表转换成元组(元组是不可变、可哈希的),就能正常执行分组操作:

import pandas as pd

data = pd.DataFrame({"first": [0, 1, 2, 3, 4],
                     "class": [[0, 1], [1, 0], [1, 0], [0, 1], [1, 0]]})

# 将列表转为元组
data["class"] = data["class"].apply(tuple)
class_groups = [group_data for group_key, group_data in data.groupby("class")]
print(class_groups)

方法2:拆分独热编码为多列分组

独热编码本身的设计逻辑就是用多列来表示类别,直接把列表拆成独立列,按这些列的组合分组更符合业务逻辑,后续处理也更方便:

import pandas as pd

data = pd.DataFrame({"first": [0, 1, 2, 3, 4],
                     "class": [[0, 1], [1, 0], [1, 0], [0, 1], [1, 0]]})

# 拆分列表为多列,命名为class_0、class_1
class_df = pd.DataFrame(data["class"].tolist(), columns=["class_0", "class_1"])
data = pd.concat([data, class_df], axis=1).drop("class", axis=1)

# 按拆分后的多列组合分组
class_groups = [group_data for group_key, group_data in data.groupby(["class_0", "class_1"])]
print(class_groups)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:32:12