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

Pandas调用自定义函数报错:TypeError: object of type 'int' has no len()

错误原因分析:TypeError: object of type 'int' has no len()

核心问题

错误源于第二行np.nan的处理漏洞:

  1. 执行data['col'].apply(lambda x: np.array(x))时,原始的np.nan被转换成0维numpy数组(array(nan)),此时该单元格内容不再是np.nan,而是一个包含nan值的数组对象。
  2. 后续的data["col"].fillna('0')无法处理这个0维数组——fillna仅替换单元格值为np.nan的元素,不处理数组内部的nan值,也不会识别0维数组为缺失值。
  3. 当自定义函数pom接收这个0维数组作为参数a时,len(a)会触发错误:0维numpy数组没有维度长度,Python将其视为类似整数的标量对象,因此抛出TypeError: object of type 'int' has no len()。

验证与修复

  • 检查data["col"].iloc[1]的类型,会发现它是numpy.ndarray而非预期的字符串或整数。
  • 修复方案二选一:
    # 方案1:先填充缺失值再转换数组
    data["col"] = data["col"].fillna([])  # 用空列表填充nan
    data["col"] = data["col"].apply(lambda x: np.array(x))
    
    # 方案2:在转换数组时直接处理nan
    data["col"] = data["col"].apply(lambda x: np.array(x) if pd.notna(x) else np.array([]))
    
    调整后,pom函数接收的均为有长度的数组,不会触发len()错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:15:45