“标签[0]不在[索引]中”

时间:2018-06-23 11:08:21

标签: python pandas numpy

当我在python中发出以下代码(其中myfun是函数的名称)时,B是熊猫数据框:

bravopan.com

它在函数的这一行给出了错误

myfun(B,10)

其中B和数据相同,而A1和A2是数字。 错误如下:

A=(data.loc[ii]>=A1) & (data.loc[ii]<A2)

我阅读了您网站上的所有内容,但不适用于我的情况。因为没有人解释这个错误在说什么。

谁能告诉我在哪里可能遇到问题以及如何解决? 甚至说标签[0]不在[索引]中是什么意思?在我的情况下是label [0]。

2 个答案:

答案 0 :(得分:3)

摘自pandas文档:

  

DataFrame.loc

     

通过标签或布尔数组访问一组行和列。   .loc []主要基于标签,但也可以与布尔数组一起使用。   允许的输入为:

     
      
  • 单个标签,例如5或'a',(请注意5会被解释为索引的标签,而绝不会被解释为沿索引的整数位置   索引)。

  •   
  • 标签的列表或数组,例如['a','b','c']。

  •   
  • 带有标签的切片对象,例如'a':'f'。

  •   
  • 与所切轴长度相同的布尔数组,例如[对,错,对]。

  •   
  • 具有一个参数(调用Series,DataFrame或Panel)的可调用函数,该函数返回用于索引的有效输出(其中一个   以上)
  •   

由于我猜ii是整数类型,因此您需要使用df.iloc来代替

A = (data.iloc[ii] >= A1) & (data.iloc[ii] < A2)

答案 1 :(得分:0)

当您的索引不是以0开头时,也会发生此错误。我使用下面的代码重置了我的索引,该代码修复了该错误。

train_df = train_df.reset_index()

这不能直接解决问题中描述的问题,但是希望在此留作参考,以防将来有人遇到相同的错误。