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

Python for循环保存最后两次迭代数据报KeyError:65问题求解

错误原因

KeyError: 65 表示你尝试访问的整数索引65不存在于dispo_ville_n的索引集合中,问题根源是dispo_ville_n.loc[capt-1,"DevEUI"]的索引访问逻辑存在漏洞:

  • 如果你遍历的dispo_ville_n索引不是连续的整数序列,比如索引实际为[66,67,68],第一次循环取到capt=66时,capt-1=65不在索引范围内,就会直接抛出该错误
  • 即使索引是连续的,第一次循环的capt是索引最小值时,capt-1必然是不存在的非法索引
  • 额外注意:你原代码中访问capt_fonctionnels的多键没有包裹为元组,可能被解析为两个独立参数,也会引发取值异常

修复方案

你需要保存最后两次迭代的信息,更稳妥的实现方式是用临时变量存储上一轮迭代的DevEUI值,完全规避索引访问的兼容问题:

# 初始化变量存储上一轮的DevEUI
last_dev_eui = None
for capt in dispo_ville_n.index.values.astype(int):
    # 此处省略其余脚本逻辑
    current_dev_eui = dispo_ville_n.loc[capt, "DevEUI"]
    # 跳过第一次循环,只有存在上一轮值时再执行统计
    if last_dev_eui is not None:
        nmbr_capt = capt_fonctionnels[(current_dev_eui, last_dev_eui)].value_counts()
    # 更新上一轮值供下一次循环使用
    last_dev_eui = current_dev_eui

如果你确实需要保留索引减1的访问逻辑,先校验索引合法性再执行操作:

for capt in dispo_ville_n.index.values.astype(int):
    # 此处省略其余脚本逻辑
    if (capt - 1) in dispo_ville_n.index:
        nmbr_capt = capt_fonctionnels[(dispo_ville_n.loc[capt,"DevEUI"], dispo_ville_n.loc[capt-1,"DevEUI"])].value_counts()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:36:03