.loc,.iloc和不推荐使用的.ix的速度。为什么不使用.ix?

时间:2019-06-03 17:11:31

标签: python pandas indexing

在堆栈溢出比较loc,iloc和ix时有多个问题,例如this one,而在讨论速度差异时有多个问题,例如this one。看来,共识是.ix更快,但它是deprecated

这使我想到了一个问题,如果.ix这么快,尤其是在基于标签的索引中,为什么不推荐使用它?您为什么不想使用更快的方法?我发现不赞成使用.ix的唯一原因是它使人们感到困惑,因为它适用于标签和整数。我想念什么吗?还是.ix唯一令人困惑的缺点,因此将来可能不会得到支持?

另外,关于这三种方法的实现还有一个疑问。 .ix如何更快,更具体。这对我来说似乎违反直觉。我希望方法越通用,它就会变得越慢。为什么不将loc和iloc编写得比.ix更快呢?

1 个答案:

答案 0 :(得分:2)

ix必须对标签的含义进行假设。这不是直观的行为,并且可能导致在极端情况下严重损坏(例如,当列标签本身是整数时)。使用loc,您只传递标签。使用iloc,您只传递整数位置索引。输入很明显,输出也很明显。

现在,提到的速度差异约为毫秒或微秒,这是“严重的,不用担心它”这种差异。我认为对于更一致,更健壮的API而言,这是一个值得权衡的选择。诺夫说。