如何统计数据表指定列的单词提及次数,使用Counter报set不可哈希错误怎么解决
报错原因
Counter只能统计可哈希类型(比如字符串、数字、元组)的出现频率,你tokenized列每一行存储的是set集合,set属于可变不可哈希类型,直接传入Counter就会触发unhashable type: 'set'报错- 你当前代码的逻辑是统计每一行的
set整体的出现次数,和你要统计「所有set内部单词的全局提及次数」的需求不匹配
解决方案
有两种常用实现方式:
方式1:用pandas explode方法拆分后统计(代码最简洁)
先把每个set里的单词拆分为单独的行,再传入Counter统计:
import pandas as pd from collections import Counter counts = Counter(reviews_english['tokenized'].explode())
方式2:迭代遍历所有set收集单词后统计(兼容性最好,适配所有pandas版本)
先把所有set里的单词汇总到一个列表里,再统计:
from collections import Counter all_words = [] for word_set in reviews_english['tokenized']: # 过滤可能存在的空值行 if isinstance(word_set, set): all_words.extend(word_set) counts = Counter(all_words)
结果使用说明
- 最终
counts是词频统计字典,通过counts[目标单词]即可查询对应单词的总提及次数 - 调用
counts.most_common(N)可以获取出现次数最高的前N个单词列表
内容的提问来源于stack exchange,提问作者Nicole Brühwiler
相关产品推荐
相关产品推荐

