大熊猫.iloc和.iat之间的区别?

时间:2017-09-26 12:41:19

标签: python pandas dataframe

我最近注意到,使用DataFrame迭代.iloc行的函数非常慢。我发现有一种叫做.iat的更快的方法,据说相当于.iloc。我尝试了它,它将运行时间减少了大约75%。

但是我有点犹豫不决:为什么会有一个"相当于"方法更快?这两者的内部运作之间必然存在一些差异,这是它们存在的原因,而不仅仅是速度更快的原因。我试过到处寻找,但即使是熊猫文档也只是说明了

  

DataFrame.iat
  快速整数位置标量访问器。

     

与iloc类似,iat提供基于整数的查找。您也可以使用这些索引器进行设置。

这并没有帮助。

使用.iat是否有限制?为什么更快;它更邋??或者我只是切换到使用.iat,并高兴地忘记.iloc曾经存在过吗?

2 个答案:

答案 0 :(得分:9)

iatat仅使用标量,因此非常快。较慢,更通用的功能是ilocloc

您可以查看docs

  

由于使用 [] 进行索引必须处理很多情况(单标签访问,切片,布尔索引等),因此它需要一些开销才能弄清楚你的内容要求。如果您只想访问标量值,最快的方法是使用 at iat 方法,这些方法在所有数据结构上实现。

     

loc 类似,at提供基于标签的标量查找,而 iat 提供基于整数的查找,类似于 iloc

答案 1 :(得分:3)

iatat仅给出单个值输出,而ilocloc可以给出多行输出。
示例:
iloc[1:2,5:8]有效,但iat[1:2,5:8]会引发错误