gpt4 book ai didi

Python iloc 给出 indexError : single positional indexer is out-of-bounds in simple for loop

转载 作者:太空宇宙 更新时间:2023-11-04 01:48:36 29 4
gpt4 key购买 nike

我有如下所示的数据框:

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

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

最佳答案

选择的第一个正确方法是使用 DataFrame.loc :

print (df)
0
1 0.993995
2 1.111068
3 1.760940

for idx,row in df.iterrows():
print(df.loc[idx, 0])
0.9939950000000001
1.111068
1.7609400000000002

你的解决方案中的问题:

如果使用Series.iloc它按位置而不是标签选择函数。

所以你想通过选择来选择第 4 行:

df[0].iloc[3]

但是没有 4.th(python 从 0 开始计数,所以对于选择第 4 行需要 3)行所以引发错误。

如果使用:

df[0].loc[3]

它按您预期的方式工作,因为选择索引 3(不是不存在的位置 4)和列 0,但更好的是使用:

df.loc[idx, 0]

因为evaluation order matters .

关于Python iloc 给出 indexError : single positional indexer is out-of-bounds in simple for loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58572096/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com