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

Shapelets平台添加数据集新列时触发IndexError: list index out of range

排查Shapelets add_column触发IndexError: list index out of range的原因

错误根源

你代码里的核心问题是聚合函数avg的使用方式错误:

  • shapelets.functions.avg是全局聚合函数,需要作用于整个数据集的列(比如data['age']),用来计算该列的整体平均值。
  • 但你在lambda函数里传入了row.age——这是当前行的单个数值,avg函数会尝试将这个单个值当作可迭代对象遍历,进而触发索引越界错误。

修正方案

方案1:预计算全局平均值再使用

先算出整个数据集age列的平均值,再在add_column的逻辑里引用这个值:

import shapelets as sh
from shapelets.functions import avg

session = sh.sandbox()
data = session.from_csv("/root/data.csv")

# 预计算age列的全局平均值
age_global_avg = data.agg(avg(data['age']))
# 使用预计算的值生成新列
data.add_column("avg_tot", lambda row: (row.Width * row.Lenght) / age_global_avg)

方案2:直接使用Shapelets列表达式语法

Shapelets支持直接基于列对象进行运算,无需借助lambda,这种方式更简洁且符合框架设计逻辑:

import shapelets as sh
from shapelets.functions import avg

session = sh.sandbox()
data = session.from_csv("/root/data.csv")

# 直接用列对象和聚合函数构建表达式
data.add_column("avg_tot", (data['Width'] * data['Lenght']) / avg(data['age']))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:23:01