【发布时间】:2018-03-07 16:51:10
【问题描述】:
我最近注意到使用.iloc 迭代DataFrame 行的函数非常慢。我发现有一个更快的方法叫做.iat,据说相当于.iloc。我试过了,它把运行时间减少了大约 75%。
但我有点犹豫:为什么有更快的“等效”方法?这两者的内部工作方式之间肯定存在一些差异,以及它们都存在的原因,而不仅仅是更快的那个。我试过到处找,但即使是熊猫文档也只是说
DataFrame.iat
快速整数位置标量访问器。与 iloc 类似,iat 提供基于整数的查找。您也可以使用这些索引器进行设置。
这并没有帮助。
使用.iat 有限制吗?为什么更快;是不是更草率了?还是我只是切换到使用 .iat 并高兴地忘记 .iloc 曾经存在过?
【问题讨论】:
-
.iat仅使用标量,.iloc使用标量 + df,系列 -> 更通用 -> 更慢 -
注意事项:如果你经常迭代行,问题不在于
atvs `loc`,而是你应该很少迭代行;-)跨度>