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]
,因此您可以看到错误。忘记数据帧,您的问题发生在您尝试为列表本身编制索引时。这是否回答了您的问题?