我正在学习Python熊猫库。来自R的背景,索引和选择函数似乎比它们需要的复杂。我的理解是.loc()仅基于标签,.iloc()仅基于整数。
如果.ix()更快并且支持整数和标签访问,为什么还要使用.loc()和.iloc()?
请参考文档“索引的不同选择”,该文件清楚地说明了何时以及为什么应该在
.ix上 使用 .loc, .iloc ,这与显式用例有关:
.ix支持基于整数和标签的混合访问。它主要基于标签,但是将退回到整数位置访问,除非相应的轴是整数类型。.ix是最通用的,将支持.loc和.iloc中的任何输入。.ix还支持浮点标签方案。.ix在处理混合的位置和基于标签的层次索引时特别有用。
但是,当轴基于整数时,仅支持基于标签的访问,而不支持基于位置的访问。因此,在这种情况下,通常最好是显式并使用.iloc或.loc。
希望这可以帮助。
由于从@Alexander评论, 大熊猫 将要弃用ix
在 0.20 ,细节在这里。
背后的重要原因之一是,混合索引-位置和标签(有效使用ix
)已成为用户的重要问题来源。
预计迁移到使用iloc
和loc
替代,这里是一个链接如何转换代码。
我正在学习Python熊猫库。来自R背景,索引和选择函数似乎比它们需要的更复杂。我的理解是. loc()仅仅是基于标签的,而. iloc()仅仅是基于整数的。 如果. ix()更快并且支持整数和标签访问,我为什么要使用. loc()和. iloc()?
问题内容: 有人可以解释这三种切片方法有何不同吗? 我看过文档,也看过这些 答案,但是我仍然发现自己无法解释这三者之间的区别。在我看来,它们在很大程度上似乎是可互换的,因为它们处于切片的较低级别。 例如,假设我们要获取的前五行。这三者如何运作? 有人可以提出三种用法之间的区别更清楚的情况吗? 问题答案: 注意:在熊猫版本0.20.0及更高版本中,已弃用,建议改为使用loc和iloc。我留下了ix完
关于堆栈溢出,有多个问题比较loc、iloc和ix,比如这一个,还有多个问题讨论速度差异,比如这一个。似乎大家的共识是.ix速度更快,但它已被弃用。 这就引出了我的问题,如果. ix更快,尤其是在基于标签的索引中,为什么要弃用它?为什么你不想使用更快的方法?我发现弃用. ix的唯一原因是它混淆了人们,因为它对标签和整数都有效。我是不是漏了什么?或者. ix的唯一缺点是它令人困惑,因此将来可能不支持
问题内容: 最近开始从我的安全位置(R)分支到Python,并且对中的单元格定位/选择感到有些困惑。我已经阅读了文档,但仍在努力了解各种本地化/选择选项的实际含义。 我为什么应该使用或超过最一般的选择? 我的理解是,,,和可以提供一些保证正确性是不能提供的,但我也看到了在那里往往是一刀切最快的解决方案。 请说明使用除?以外的任何东西背后的现实世界中的最佳实践推理。 问题答案: loc: 仅适用于索
我有以下问题:在df中,我想要选择特定的行和特定的列,在这个选择中,获取第一个元素,并为它们分配一个新值。我天真地认为以下代码应该可以完成这项工作: 和都应将视图返回到df中,并且应覆盖该值。但是,数据帧不会改变。为什么? 我知道如何绕过它--首先使用创建一个新的df,然后使用更改值并更新原始df(如下所示)。 但是a)我不认为这是最佳的,b)我想知道为什么顶级解决方案不起作用。为什么它返回一个副
有人能解释一下这两种切片方法有什么不同吗? 我看过文档,也看到过这些答案,但我还是发现自己无法理解这三种方法有什么不同。在我看来,它们在很大程度上是可以互换的,因为它们处于较低的切片级别。 例如,假设我们希望获得的前五行。这两个是怎么工作的? 谁能说出三种情况,在使用上的区别比较清楚? 从前,我也想知道这两个函数与有什么不同,但是已经从pandas 1.0中删除了,所以我不再关心了。