DataFrame分词报错‘expected string or bytes-like object’求解决方案
解决DataFrame分词报错
expected string or bytes-like object的建议 先排查
free['tokens']列的异常数据:
报错核心是你遍历的free['tokens'][i]里存在非字符串/非字节类型的元素(比如NaN、数值、None),可以用以下代码快速检查:# 查看列内元素类型分布 print(free['tokens'].apply(type).value_counts()) # 查找空值行 print(free[free['tokens'].isna()])针对性修复方案:
- 过滤空值+处理不同类型元素
如果列里混合了字符串和已分词的列表,同时存在空值,用以下代码:all_tokens = [] # 先过滤掉空值行 for item in free['tokens'].dropna(): if isinstance(item, str): # 假设用空格分词,可替换成你的分词逻辑 all_tokens.extend(item.split()) elif isinstance(item, list): # 如果item已经是分词后的列表,直接合并 all_tokens.extend(item) - 强制转换为字符串(适合元素为非字符串但可转成文本的场景)
若部分元素是数值等可转字符串的类型,可先转成字符串再分词:all_tokens = [] for item in free['tokens']: if item is not None: # 强制转为字符串后分词 all_tokens.extend(str(item).split()) - 高效写法(用itertools简化)
避免手动循环拼接,用itertools.chain批量处理:from itertools import chain # 先清理空值,再统一处理元素 valid_items = free['tokens'].dropna().apply( lambda x: x.split() if isinstance(x, str) else x ) all_tokens = list(chain.from_iterable(valid_items))
- 过滤空值+处理不同类型元素
内容的提问来源于stack exchange,提问作者Lily Tee
相关产品推荐
相关产品推荐

