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

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()])
    
  • 针对性修复方案:

    1. 过滤空值+处理不同类型元素
      如果列里混合了字符串和已分词的列表,同时存在空值,用以下代码:
      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)
      
    2. 强制转换为字符串(适合元素为非字符串但可转成文本的场景)
      若部分元素是数值等可转字符串的类型,可先转成字符串再分词:
      all_tokens = []
      for item in free['tokens']:
          if item is not None:
              # 强制转为字符串后分词
              all_tokens.extend(str(item).split())
      
    3. 高效写法(用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:35:26