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

使用for循环配对数据时触发KeyError:403755错误,求排查解决

问题排查:KeyError: 403755 当使用for循环进行数据集两两配对时

我正在用for循环将数据集中的每个值两两配对,但运行时抛出了KeyError,报错信息如下:

Traceback (most recent call last):
  File "C:\Users\nourf\AppData\Roaming\Python\Python39\site-packages\pandas\core\indexes\range.py", line 385, in get_loc
    return self._range.index(new_key)
ValueError: 403755 is not in range

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\nourf\PycharmProjects\work\1.0.py", line 75, in <module>
    if str(newdf.loc[fval, "mac"]) == str(newdf.loc[sval, "mac"]):
  File "C:\Users\nourf\AppData\Roaming\Python\Python39\site-packages\pandas\core\indexing.py", line 960, in __getitem__
    return self.obj._get_value(*key, takeable=self._takeable)
  File "C:\Users\nourf\AppData\Roaming\Python\Python39\site-packages\pandas\core\frame.py", line 3622, in _get_value
    row = self.index.get_loc(index)
  File "C:\Users\nourf\AppData\Roaming\Python\Python39\site-packages\pandas\core\indexes\range.py", line 387, in get_loc
    raise KeyError(key) from err
KeyError: 403755

问题原因分析

  • 核心问题:你用到的索引值403755不在newdf的索引范围内。Pandas的RangeIndex是连续递增的序列(通常从0开始),访问不存在的索引就会触发这个错误。
  • 常见诱因:
    • 循环逻辑错误:生成的索引值超过了数据集实际行数。比如数据集只有403755行,索引最大是403754,但循环却生成了403755。
    • 数据集索引被修改:之前的操作(比如删除行)导致索引不连续,但循环仍按原连续范围生成索引。
    • 混淆列值与索引:fval/sval是数据列的数值,而非DataFrame的有效索引值。

解决建议

  • 先确认索引范围:执行print(newdf.index)查看索引的起始、结束值以及是否连续。
  • 修正两两配对逻辑:用itertools.combinations直接基于合法索引生成配对,避免手动生成索引出错:
    import itertools
    # 生成所有行的两两索引组合
    for fval, sval in itertools.combinations(newdf.index, 2):
        if str(newdf.loc[fval, "mac"]) == str(newdf.loc[sval, "mac"]):
            # 你的业务逻辑代码
    
  • 重置索引(若索引不连续):
    newdf = newdf.reset_index(drop=True)
    
    重置后索引会变成从0开始的连续整数,再循环就不会出现超出范围的问题。
  • 检查fval/sval来源:确保它们是从newdf.index中获取的,而非其他数据列的数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:18:15