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

Pandas中str.split生成的列表列调用len()报错,类型检查却显示为list?

问题原因及解决办法
  • 核心原因:你的Route列里存在NaN值(空值)。用df.Route.str.split('→')处理时,遇到NaN会直接返回NaN(float类型),而非列表。你看到的输出全是list,大概率是pandas默认只显示了前几行,后面的NaN被截断没显示;或是你查看apply(lambda x: type(x))的结果时,只看了部分行,漏掉了float类型的NaN项。

  • 验证方式:执行route.isna().sum()统计空值数量,就能确认是不是有NaN在里面。

  • 解决办法:

    • 方案一:先把NaN替换成空列表,再计算长度:
      route = df.Route.str.split('→').fillna([])
      route.apply(lambda x: len(x))
      
    • 方案二:在lambda里加类型判断,针对性处理NaN:
      route.apply(lambda x: len(x) if isinstance(x, list) else 0) # 0可根据需求换成其他值,比如NaN
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:15:46