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

使用.loc函数时遇报错,求Python代码修改方案

解决Pandas切片时的.loc/[]标签缺失报错问题

你遇到的这个报错是因为Pandas不再支持给.loc或者[]传递包含缺失标签的类列表对象,结合你的代码来看,主要有两个问题需要修正:

问题1:变量名不匹配

你先定义了col_var = load_var.loc[0:5732,['col1','col2','col3']],但后面绘图时却用了s[0:5732]['col1']——这里的s根本没有定义,不仅会先引发NameError,也是导致后续切片逻辑混乱的核心原因之一。

问题2:切片方式错误

对于DataFrame的行位置切片(按行号0到5732),直接用[]或者loc容易出问题:.loc是基于标签索引工作的,如果你的行索引不是连续的从0开始的整数(比如读取Excel时行索引被打乱过),0:5732就会试图匹配不存在的标签,从而触发你看到的报错。正确的按位置切片应该用.iloc。

修改后的完整代码

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

# 读取Excel数据
load_var = pd.read_excel(r'path\\filename.xlsx')
# 按位置选取0-5732行(左闭右开,所以结束位置写5733),以及指定列
col_var = load_var[['col1','col2','col3']].iloc[0:5733]

fig, ax = plt.subplots()
# 用正确的变量名访问已经筛选好的数据
ax.plot(col_var['col1'], col_var['col1'], color='r')
plt.show()

补充说明

  • Pandas的切片是左闭右开规则,所以要包含第5732行,结束位置需要写5733
  • .iloc是专门用于按位置索引的方法,无论行索引是什么格式,都能精准选取对应行,是位置切片的稳妥选择
  • 既然col_var已经是你筛选好的子集,绘图时直接访问列名即可,不需要重复切片

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:32:44