【问题标题】:single positional indexer is out-of-bounds : Error单个位置索引器超出范围:错误
【发布时间】:2021-01-08 16:04:40
【问题描述】:

我正在练习使用 pandas 的数据框。我遇到了一个错误,我不明白为什么会出现错误。有人可以解释一下原因吗? 笔记: 这只发生在我使用 df.iloc[i+1,0] 代码行时。如果我只使用 df.iloc[i,0] 它工作正常

数据框:

A,B
1,2
2,3
4,5
5,6
6,7
7,8
9,10

代码:

import pandas as pd
df = pd.read_csv("text.txt")
for i in range(0,len(df)):
    if (df.iloc[i,0] + df.iloc[i+1,0]) == 5 :
        print("hey")

错误:单个位置索引器超出范围

【问题讨论】:

  • 如果你有三个桶并且你问第四个桶里有什么,那么单位置索引器(即确定你想查看的桶的数字)超出范围(即你有多少桶有)。这是因为df.iloc[i+1, 0]i == len(df) - 1

标签: python pandas


【解决方案1】:

您的程序在“A”列中查找当前值和下一个值。但是,一旦它到达数据帧的“A”列的末尾,数据帧中就没有其他值了,但它仍然会寻找下一个值:.iloc[i + 1, 0],它不存在。这会导致您遇到的错误。该问题可以通过将范围更改为比数据帧的长度小 1 来解决。这意味着循环将在数据帧结束前停止一个值,读取最终值,然后退出。

import pandas as pd
df = pd.read_csv("test.txt")
for i in range(0,len(df)-1):
    if (df.iloc[i,0] + df.iloc[i+1,0]) == 5 :
        print("hey")

【讨论】:

    【解决方案2】:

    如果i 达到最大可能值

    for i in range(0, len(df))
    

    那么i+1 将超出此范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      • 2019-04-13
      • 2019-01-11
      • 2018-03-03
      • 2022-07-06
      • 2023-03-30
      相关资源
      最近更新 更多