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


69

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

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


1
这个答案在这里应该是非常有帮助!
YaOzI

2
永远不要使用.ix下面是一个更加有用的答案的之间的差异.loc.iloc以及[]
泰德·彼得鲁

Answers:


71

请参考文档“索引的不同选择”,该文件清楚地说明了何时以及为什么应该在.ix上使用.loc,.iloc,这与显式用例有关:

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

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

希望这可以帮助。

更新2017年3月22日

由于从@Alexander评论,大熊猫将要弃用ix0.20,细节在这里

背后的重要原因之一是,混合索引-位置和标签(有效使用ix)已成为用户的重要问题来源。

预计迁移到使用ilocloc替代,这里是一个链接如何转换代码


1
您能否澄清“但是,当轴是基于整数的,仅支持基于标签的访问,而不支持位置访问。因此,在这种情况下,通常最好显式并使用.iloc或.loc。” 手段?这部分对我来说很朦胧
AZhao 2015年

1
@AZhao,我想我不明白您要我澄清的内容,您是否想知道索引的选择之间的区别或如何确定“显式”?也许您可以阅读索引的差异选择
安泽尔

3
@AZhao,我认为这意味着,如果您使用整数作为标签(可能不符合其列顺序),则无法区分您的意思。如果我误解了,有人纠正我。
Neal

3
看来,.ix索引器将在大熊猫被废弃0.20.0 pandas-docs.github.io/pandas-docs-travis/...
亚历山大

@Alexander-感谢您的弃用说明,我将更新答案以反映这一点:)
Anzel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.