Python 使用for循环时出现意外索引错误

Python 使用for循环时出现意外索引错误,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个熊猫数据框,形状-(133,6) -我尝试使用iloc来迭代帧,然后选择并将数据块附加到列表中 我有一份起始位置列表: start_positions = [6, 32, 58, 84, 110] 末端位置是+7行,所以我试过: frames = [] for x in start_positions: frames.append(df.iloc[start_positions[x] : start_positions[x]+7]) 然而,投掷是: 索引器错误:索引6超出大小

我有一个熊猫数据框,形状-
(133,6)
-我尝试使用iloc来迭代帧,然后选择并将数据块附加到列表中

我有一份起始位置列表:

start_positions = [6, 32, 58, 84, 110]
末端位置是+7行,所以我试过:

frames = []
for x in start_positions:
    frames.append(df.iloc[start_positions[x] : start_positions[x]+7])
然而,投掷是:

索引器错误:索引6超出大小为5的轴0的界限


我不太明白,如果我通过
start\u positions
手动递增,这会起作用

我认为for循环中的代码从一开始就有问题。查看
帧中的
开始位置[x]
。追加(df.iloc[start\u positions[x]:开始位置[x]+7])
。for循环中
x
的值从6开始,但是
start\u positions
的最大索引可以是4,因为
len(start\u positions)=5

@Maverick,我想你可能想做的是删除
start\u位置
,然后做类似的事情(但没有测试代码)


我认为代码从for循环的一开始就有问题。查看
帧中的
开始位置[x]
。追加(df.iloc[start\u positions[x]:开始位置[x]+7])
。for循环中
x
的值从6开始,但是
start\u positions
的最大索引可以是4,因为
len(start\u positions)=5

@Maverick,我想你可能想做的是删除
start\u位置
,然后做类似的事情(但没有测试代码)


尝试将
用于范围内的x(len(开始位置))
而不是
用于开始位置的x,如下所示:

frames = []
for x in range(len(start_positions)):
    print(start_positions[x],":",start_positions[x]+7)
结果是:

6 : 13
32 : 39
58 : 65
84 : 91
110 : 117

尝试将
用于范围内的x(len(开始位置))
而不是
用于开始位置的x,如下所示:

frames = []
for x in range(len(start_positions)):
    print(start_positions[x],":",start_positions[x]+7)
结果是:

6 : 13
32 : 39
58 : 65
84 : 91
110 : 117

另一种可能的解决办法是使用:

frames = []
for x in start_positions:
    frames.append(df.iloc[x:x+7])

x是起始位置的一个元素,可以按原样访问,如果它是一个索引,它将像您那样使用。

另一种可能的解决方案是使用:

frames = []
for x in start_positions:
    frames.append(df.iloc[x:x+7])

x是起始位置的一个元素,可以按原样访问,如果它是一个索引,它将按您的方式使用。

您试图从这个代码@Maverick中获得什么?每个块表示一年的数据,每个列表示不同的类别。因此,我们的目标是提取数据并将其存储在与年份对应的单独位置。
对于处于起始位置的x:
x不是索引!您使用
开始位置[x]
,因此您可以看到错误。忘记数据帧,您的问题发生在您尝试为列表本身编制索引时。这是否回答了您的问题?您试图从这段代码@Maverick中获得什么?每个区块代表一年的数据,每个列代表不同的类别。因此,我们的目标是提取数据并将其存储在与年份对应的单独位置。
对于处于起始位置的x:
x不是索引!您使用
开始位置[x]
,因此您可以看到错误。忘记数据帧,您的问题发生在您尝试为列表本身编制索引时。这是否回答了您的问题?