当前位置: 首页 > 知识库问答 >
问题:

.ix()是否总是优于.loc()和.iloc(),因为它更快,并且支持整数和标签访问?

西门骁
2023-03-14

我正在学习Python熊猫库。来自R背景,索引和选择函数似乎比它们需要的更复杂。我的理解是. loc()仅仅是基于标签的,而. iloc()仅仅是基于整数的。

如果. ix()更快并且支持整数和标签访问,我为什么要使用. loc()和. iloc()?

共有1个答案

井修雅
2023-03-14

请参考文档索引的不同选择,它清楚地说明了何时以及为什么你应该使用. loc,. iloc而不是. ix,它是关于显式用例的:

.ix支持混合整数和基于标签的访问。它主要基于标签,但将退回到整数位置访问,除非相应的轴是整数类型。ix是最通用的,将支持.loc和.iloc中的任何输入。ix还支持浮点标签方案。在处理混合位置索引和基于标签的层次索引时,ix非常有用。

但是,如果轴是基于整数的,则仅支持基于标签的访问,而不支持位置访问。因此,在这种情况下,通常最好显式地使用.iloc或.loc。

希望这能有所帮助。

感谢@Alexander的评论,Pandas将在0.20中弃用ix,详情见此处。

背后的一个重要原因是混合索引——位置索引和标签索引(有效地使用ix)一直是用户问题的一个重要来源。

预计它将迁移到使用ilocloc,这里有一个关于如何转换代码的链接。

 类似资料:
  • 问题内容: 我正在学习Python熊猫库。来自R的背景,索引和选择函数似乎比它们需要的复杂。我的理解是.loc()仅基于标签,.iloc()仅基于整数。 如果.ix()更快并且支持整数和标签访问,为什么还要使用.loc()和.iloc()? 问题答案: 请参考文档“索引的不同选择”,该文件清楚地说明了何时以及为什么应该在 .ix上 使用 .loc, .iloc ,这与显式用例有关: .ix支持基于

  • 问题内容: 有人可以解释这三种切片方法有何不同吗? 我看过文档,也看过这些 答案,但是我仍然发现自己无法解释这三者之间的区别。在我看来,它们在很大程度上似乎是可互换的,因为它们处于切片的较低级别。 例如,假设我们要获取的前五行。这三者如何运作? 有人可以提出三种用法之间的区别更清楚的情况吗? 问题答案: 注意:在熊猫版本0.20.0及更高版本中,已弃用,建议改为使用loc和iloc。我留下了ix完

  • 关于堆栈溢出,有多个问题比较loc、iloc和ix,比如这一个,还有多个问题讨论速度差异,比如这一个。似乎大家的共识是.ix速度更快,但它已被弃用。 这就引出了我的问题,如果. ix更快,尤其是在基于标签的索引中,为什么要弃用它?为什么你不想使用更快的方法?我发现弃用. ix的唯一原因是它混淆了人们,因为它对标签和整数都有效。我是不是漏了什么?或者. ix的唯一缺点是它令人困惑,因此将来可能不支持

  • 问题内容: 最近开始从我的安全位置(R)分支到Python,并且对中的单元格定位/选择感到有些困惑。我已经阅读了文档,但仍在努力了解各种本地化/选择选项的实际含义。 我为什么应该使用或超过最一般的选择? 我的理解是,,,和可以提供一些保证正确性是不能提供的,但我也看到了在那里往往是一刀切最快的解决方案。 请说明使用除?以外的任何东西背后的现实世界中的最佳实践推理。 问题答案: loc: 仅适用于索

  • 问题内容: 我有以下代码: 我得到这个值:“ ”,这是 我想知道JavaScript是否处理64位整数,还是我做错了什么? 问题答案: JavaScript使用IEEE-754双精度(64位)格式表示数字。据我了解,这为您提供53位精度,或者15至16个十进制数字。您的数字位数超出了JavaScript所能应付的位数,因此最终得到了一个近似值。 这样并不是真正的“错误处理”,但是如果您需要对大数进

  • 有人能解释一下这两种切片方法有什么不同吗? 我看过文档,也看到过这些答案,但我还是发现自己无法理解这三种方法有什么不同。在我看来,它们在很大程度上是可以互换的,因为它们处于较低的切片级别。 例如,假设我们希望获得的前五行。这两个是怎么工作的? 谁能说出三种情况,在使用上的区别比较清楚? 从前,我也想知道这两个函数与有什么不同,但是已经从pandas 1.0中删除了,所以我不再关心了。