调用DataFrame的more_clean列构建word_dict时遇TypeError报错
解决TypeError: expected string or bytes-like object错误
你的问题出在more_clean列里存在非字符串类型的数据(比如空值NaN、数字、列表这类),而word_tokenize只能处理字符串,所以触发了类型错误。
给你两种解决思路:
思路一:保留原循环逻辑,增加类型判断
在遍历的时候先检查每个元素是不是字符串,不是的话直接跳过:
word_dict = {} for sentence in df['more_clean']: # 跳过非字符串类型的数据 if not isinstance(sentence, str): continue word_token = word_tokenize(sentence) for j in word_token: # 用get方法简化计数逻辑 word_dict[j] = word_dict.get(j, 0) + 1
思路二:用pandas+Counter简化代码
这种写法更高效,适合处理DataFrame数据:
from collections import Counter # 1. 去掉空值 2. 强制转成字符串 3. 分词 4. 把分词结果展开成单个词的列表 token_list = df['more_clean'].dropna().astype(str).apply(word_tokenize).explode().tolist() # 用Counter统计词频,直接转成字典 word_dict = dict(Counter(token_list))
另外提醒下:尽量别用range(len(df['more_clean']))这种索引遍历的方式,直接遍历列元素更简洁也不容易出错。
内容的提问来源于stack exchange,提问作者Raffi El
相关产品推荐
相关产品推荐

