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

解决Pandas DataFrame列表类型列调用.unique()报错TypeError: unhashable type: 'list'的问题

解决Pandas列表列调用unique()报错的问题

嘿,这个坑我之前踩过!问题出在unique()方法的要求上——它只接受可哈希的数据类型(比如字符串、元组、数字这些),但你的m_tags列里存的都是列表,而列表是可变对象,天生不可哈希,所以才会触发TypeError: unhashable type: 'list'。

根据你的需求,我给你两种常用的解决方案:

需求1:获取唯一的标签组合

如果你想保留[reheat, cmd]这种完整的标签组,只找出哪些组合是唯一的,可以先把列表转成元组(元组是不可变的,可哈希),再调用unique():

# 将列表列转换为元组列
tags['m_tags_tuple'] = tags['m_tags'].apply(tuple)
# 获取唯一的标签组合
unique_tag_groups = tags['m_tags_tuple'].unique()
# 如果需要转回列表格式,用列表推导式处理
unique_tag_groups = [list(group) for group in unique_tag_groups]

需求2:获取所有单个标签的唯一值

如果你想找出所有出现过的独立标签(比如reheat、cmd、discharge这些单个值),可以把列表列展开后再去重:

方法1:使用Pandas的explode()(推荐,Pandas 0.25+可用)

# 把每个列表里的标签拆分成单独行
exploded_tags = tags['m_tags'].explode()
# 获取唯一的单个标签
unique_single_tags = exploded_tags.unique()

方法2:低版本Pandas的替代方案

如果你的Pandas版本低于0.25,用列表推导式把所有标签提取出来,再用集合去重:

# 提取所有标签到一个大列表
all_individual_tags = [tag for sublist in tags['m_tags'] for tag in sublist]
# 用集合去重后转回列表
unique_single_tags = list(set(all_individual_tags))

这样就能完美解决你遇到的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:04:06