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

数据标注时if语句出现'int'对象不可下标TypeError问题求助

解决TypeError: 'int' object is not subscriptable问题

嘿,我来帮你搞定这个报错!这个错误的核心原因很明确:你代码里某个地方把一个**单个整数(int)**当成了可以用下标访问的对象(比如数组、列表)来操作了,所以才会抛出这个提示。结合你之前处理字符串标签的代码,我帮你梳理下可能的问题和解决办法:

最可能的问题:误取了单个值而非数组

你原来处理字符串标签时,用df.iloc[0:120, 4].values取的是多行的标签列,得到的是一个数组。但处理新数据时,可能不小心把切片写成了单一行的索引(比如df.iloc[120, 4].values),这时候得到的就是单个int值,后续用它做数组级别的操作(比如np.where里的比较,或者不小心写了train_t[0]这种下标访问)就会报错。

验证方法

先打印下变量类型和内容确认:

print(type(train_t))
print(train_t)

如果输出是<class 'numpy.int64'>或者<class 'int'>,那就是取成单个值了,得改成切片多行的写法。

正确处理int类型标签的代码示例

假设你的目标是把某个特定整数标签(比如0)转成-1,其他转成1,代码和字符串版本几乎一致,只是把字符串换成对应的整数即可:

# 确保取的是多行标签,得到数组
train_t = df.iloc[0:120, 4].values
validation_t = df.iloc[121:, 4].values

# 把目标整数标签替换成-1,其他为1
train_t1 = np.where(train_t == 0, -1, 1)  # 这里把0换成你要匹配的整数标签
validation_t1 = np.where(validation_t == 0, -1, 1)

额外排查点:标签列的类型是否统一

如果你的标签列里混有字符串和整数(比如 dtype 是object),也可能导致奇怪的错误。可以先把列转成统一的整数类型:

# 强制转换标签列为int类型
df.iloc[:, 4] = df.iloc[:, 4].astype(int)

按照上面的步骤排查,应该就能解决这个问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:14:22