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

时间:2014-12-27 13:35:22

标签: python pandas

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

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

1 个答案:

答案 0 :(得分:68)

请参阅文档Different Choices for Indexing,它明确说明何时以及为何使用 .loc,.iloc 而不是 .ix ,这是关于明确使用的情况下:

  

.ix支持基于混合整数和标签的访问。它主要是   基于标签,但将回退到整数位置访问,除非   相应的轴是整数类型。 .ix是最通用的   将支持.loc和.iloc中的任何输入。 .ix也支持   浮点标签计划。 .ix在交易时特别有用   基于位置和标签的混合分层指数。

     

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

希望这有帮助。

2017年3月22日更新

感谢来自@Alexander的评论, Pandas 将在 0.20 中弃用ix,详情请见here

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

预计会迁移到使用ilocloc,而这是how to convert code上的链接。