“索引器:位置索引器是出界的”,当它们显然不是

下面是我正在使用的一些代码的MWE。我通过切片和一些条件慢慢地缩减初始数据帧,直到我只有所需的行。每一块五行实际上代表一个不同的对象,因此,当我缩减内容时,如果每一块五行中的任何一行符合条件,我希望保留它–这就是keep.index上的循环所完成的。不管怎样,当我完成后,我可以看到我想要的最终索引存在,但我得到一条错误消息,说“indexer-ror:positional indexer-out-bounds.”这里发生了什么

将熊猫作为pd导入
将numpy作为np导入
温度=np.随机兰特(100,5)
df=pd.DataFrame(临时,列=['First'、'Second'、'Third'、'Fourth'、'Fifth'])
df_cut=df.iloc[10:]
keep=df_cut.loc[(df_cut['First']<0.5)&(df_cut['Second']<0.6)]
新索引要使用=[]
对于keep.index中的项目:
余数=(项目%5)
add=np.arange(0-余数,5-余数,1)
inds_to_use=项目+添加
新索引到使用。追加(索引到使用)
new_Index_to_use=[ind for sublist in new_Index_to_use for ind in sublist]
最终索引使用=[]
对于新索引中的项目,请使用:
如果项目不在最终索引中,则使用:
最终索引要使用。附加(项目)
final=df_cut.iloc[最终索引要使用]

.iloc上的熊猫文档中(重点是我的):

Pandas提供了一套方法,以获得纯粹基于整数的索引。语义与python和numpy切片密切相关。这些是基于0的索引

您试图通过标签使用它,这意味着您需要.loc

从你的例子来看:

&gt&燃气轮机&燃气轮机;打印df_cut.iloc[89]
...
姓名:99,数据类型:64
&燃气轮机&燃气轮机&燃气轮机;打印df_切口位置[89]
...
姓名:89,数据类型:64

发表评论