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

Pandas的.loc方法是否曾支持仅用整数索引访问?代码报错咨询

Pandas .loc 整数参数报错的原因分析

先看你提到的这段代码:

for i in range(1, len(pred_class) - 1):
    if pred_prob.loc[i, int(pred_class[i - 1])] > pred_prob.loc[i, int(pred_class[i + 1])]:

关于旧版本可行性

Pandas从引入.loc以来,核心规则就是按标签访问行列,从来没有允许过直接用位置索引作为.loc的参数。如果这段代码在某些环境下能运行,只是因为pred_prob的行索引刚好是默认的连续整数(比如0、1、2……),此时整数i既是位置索引也是行标签,属于巧合生效的情况——这不是旧版本的特殊特性,只要行索引被修改(比如筛选数据、重置索引后),这种写法立刻会报错。

代码本身的问题

这段代码属于未经过严谨测试的错误写法。它错误地把循环的位置索引i当成了行标签来使用,完全依赖行索引是默认整数序列的假设,一旦pred_prob的行索引不符合这个前提,就会触发KeyError(找不到对应标签)。

正确的写法应该用.iloc来按位置访问(因为循环变量i是位置索引),修改后如下:

for i in range(1, len(pred_class) - 1):
    if pred_prob.iloc[i, int(pred_class[i - 1])] > pred_prob.iloc[i, int(pred_class[i + 1])]:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:25:15