【问题标题】:Difference between pandas .iloc and .iat?熊猫.iloc和.iat之间的区别?
【发布时间】:2018-03-07 16:51:10
【问题描述】:

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

但我有点犹豫:为什么有更快的“等效”方法?这两者的内部工作方式之间肯定存在一些差异,以及它们都存在的原因,而不仅仅是更快的那个。我试过到处找,但即使是熊猫文档也只是说

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

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

这并没有帮助。

使用.iat 有限制吗?为什么更快;是不是更草率了?还是我只是切换到使用 .iat 并高兴地忘记 .iloc 曾经存在过?

【问题讨论】:

  • .iat 仅使用标量,.iloc 使用标量 + df,系列 -> 更通用 -> 更慢
  • 注意事项:如果你经常迭代行,问题不在于at vs `loc`,而是你应该很少迭代行;-)跨度>

标签: python pandas dataframe


【解决方案1】:

iatat 仅使用标量,非常快。更慢、更通用的函数是ilocloc

您可以查看docs:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    猜你喜欢
    • 2013-02-21
    • 1970-01-01
    • 2017-01-11
    • 2020-02-17
    • 2021-12-06
    • 2016-10-21
    • 2021-05-08
    • 2019-12-10
    相关资源
    最近更新 更多