我正在学习Python pandas 库。由于具有 R 背景,索引和选择函数似乎比实际需要的更复杂。我的理解是 .loc() 仅基于标签,而 .iloc() 仅基于整数。
如果 .ix() 更快并且支持整数和标签访问,为什么我应该使用 .loc() 和 .iloc()?
请参阅文档索引的不同选择,它清楚地说明了何时以及为何应使用.loc、.iloc而不是.ix,这是关于明确的用例:
.ix 支持混合整数和基于标签的访问。它主要是 基于标签,但将回退到整数位置访问,除非 对应的轴是整数类型。 .ix 是最通用且 将支持 .loc 和 .iloc 中的任何输入。 .ix 还支持 浮点标签方案。 .ix 在交易时特别有用 具有混合位置和基于标签的分层索引。
但是,当轴基于整数时,仅基于标签的访问和 不支持位置访问。因此,在这种情况下,通常 最好明确并使用 .iloc 或 .loc。
感谢 @Alexander 的评论,Pandas 将在
0.20中弃用
ix
,详细信息请参阅here。
背后的一个重要原因是混合索引——位置和标签(有效地使用
ix
)一直是用户问题的重要根源。
预计会迁移到使用
iloc
和 loc
,这里有一个关于 如何转换代码的链接。
DataFrame.ix
已被完全删除,请参阅https://pandas.pydata.org/pandas-docs/stable/whatsnew/v1.0.0.html#removal-of-prior-版本弃用更改