首页 > 解决方案 > Python iloc给出indexError:单个位置索引器在简单的for循环中超出范围

问题描述

我有如下给出的数据框:

df = 
          0
1      0.993995
2      1.111068
3      1.760940
.
.
.
49    40.253574
50    40.664486
51    41.083962

我正在遍历每一行并打印每个元素。我的代码如下:

for idx,row in df.iterrows():
    print(df[0].iloc[idx])

目前的输出:

1.111068
1.76094
2.691832
.
.
40.664486
41.083962
Traceback (most recent call last):

  File "<ipython-input-46-80539a9081e5>", line 2, in <module>
    print(darkdf[0].iloc[idx])

  File "C:\Users\MM\Anaconda3\lib\site-packages\pandas\core\indexing.py", line 1500, in __getitem__
    return self._getitem_axis(maybe_callable, axis=axis)

  File "C:\Users\MM\Anaconda3\lib\site-packages\pandas\core\indexing.py", line 2230, in _getitem_axis
    self._validate_integer(key, axis)

  File "C:\Users\MM\Anaconda3\lib\site-packages\pandas\core\indexing.py", line 2139, in _validate_integer
    raise IndexError("single positional indexer is out-of-bounds")

IndexError: single positional indexer is out-of-bounds

为什么这个简单的功能会出错。有人可以帮助我理解错误在说什么?

标签: pythondataframe

解决方案


您可能想要使用loc而不是iloc. iloc使用从零开始的行号,而不是索引。您的代码正在传递索引,这些索引超出了从零开始的行号的范围,因此超出了范围。


推荐阅读