Dataframe里,for循环行遍历整张表,for循环里有drop(),

删除部分行之后报错出界IndexError: single positional indexer is out-of-bounds

j=0
k=0
for i in df_red.index:
    if (df_red.iloc[i]['distance_interval']==0)and(df_red.iloc[i]['dis_int2']!=0):
        j = i-1
        print(j)
    if (df_red.iloc[i]['distance_interval']!=0)and(df_red.iloc[i]['dis_int2']==0):
        k = i-1
        print('k=%d'%(k))
        if df_test.iloc[k]['data_time_sec']-df_test.iloc[j]['data_time_sec']>300:
            df_red.drop(df_red.index[j:k],inplace= True)

求问大佬这个问题该怎么解决啊

1个回答

看错误应试数组越界问题,可以把数组下标打印出来看下是哪里越界了

qq_31247017
孔橙 我自己有试过把if df_test.iloc[k]['data_time_sec']-df_test.iloc[j]['data_time_sec']>300: df_red.drop(df_red.index[j:k],inplace= True)这个if判断去掉就没报错了。我的数组原来有3000行,前59行会因为符合drop的条件被删除,然后实际上我的数组就只有2941行了,但它似乎还是按3000行在遍历,到for循环的第2942次就报出界错了
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问