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

meg*_*ger 67 python pandas

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

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

Anz*_*zel 69

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

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

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

希望这可以帮助.

2017年3月22日更新

感谢@Alexander的评论,Pandasix0.20中弃用,详情请点击此处.

其中一个重要原因是因为混合索引 - 位置和标签(有效使用ix)一直是用户问题的重要来源.

它应该迁移到使用iloc,loc而这里是一个如何转换代码的链接.

  • @AZhao,我认为这意味着如果你使用整数*作为*你的标签(可能与他们的列顺序不对应),那么它将无法区分你的意思.如果我误解了,有人会纠正我. (3认同)
  • 看来`.ix`索引器将在Pandas 0.20.0中弃用http://pandas-docs.github.io/pandas-docs-travis/whatsnew.html#deprecate-ix (2认同)