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

问题描述 投票:0回答:2

我正在学习Python pandas 库。由于具有 R 背景,索引和选择函数似乎比实际需要的更复杂。我的理解是 .loc() 仅基于标签,而 .iloc() 仅基于整数。

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

python pandas
2个回答
72
投票

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

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

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

2017 年 3 月 22 日更新

感谢 @Alexander 的评论,Pandas 将在

0.20
中弃用 ix,详细信息请参阅here

背后的一个重要原因是混合索引——位置和标签(有效地使用

ix
)一直是用户问题的重要根源。

预计会迁移到使用

iloc
loc
,这里有一个关于 如何转换代码的链接。


0
投票
自 2020 年 1 月发布 Pandas 1.0.0 以来,

DataFrame.ix
已被完全删除,请参阅https://pandas.pydata.org/pandas-docs/stable/whatsnew/v1.0.0.html#removal-of-prior-版本弃用更改

© www.soinside.com 2019 - 2024. All rights reserved.