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

Python获取Pandas DataFrame列唯一值时unhashable type: 'list'错误如何解决

问题成因
  • Pandas的unique()方法基于哈希表实现去重逻辑,要求序列内的所有元素都是可哈希类型(即具备固定不变的哈希值,比如字符串、数值、元组等)。列表是Python中的可变类型,没有固定哈希值,无法作为哈希表的键参与去重计算,因此触发TypeError: unhashable type: 'list'报错。
  • 你使用的Crowdtangle导出数据中,country_mentions_domestic字段会把单条内容提到的多个国内国家/地区以列表格式存储,和其他存储字符串的字段结构不同,因此无法直接调用unique()方法。
解决方法

根据实际需求选择对应方案即可:

方案1:统计所有出现过的单个国家唯一值

如果要提取该字段下所有提到过的独立国家名称,先把嵌套的列表拆平再去重:

# 先过滤空值,再拆平所有列表后去重
all_unique_countries = list({
    country 
    for sublist in df.country_mentions_domestic.dropna() 
    for country in sublist
})

方案2:统计国家组合的唯一值

如果要把单条内容里提到的多个国家作为一个整体去重,先把列表转为可哈希的元组再执行去重:

# 转元组后去重,得到元组格式的国家组合
unique_country_combinations = df.country_mentions_domestic.dropna().apply(tuple).unique()
# 如需转回列表格式可追加一步转换
unique_country_combinations = [list(item) for item in unique_country_combinations]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:24:02