Pandas 是否对单索引数据帧使用哈希,对多索引数据帧使用二进制搜索?

vic*_*orx 9 python sorting dataframe pandas

我一直认为 Pandas 在对数据帧中的行进行索引时使用散列,以便进行诸如df.loc[some_label]is之类的操作O(1)

然而,我今天才意识到事实并非如此,至少对于多索引数据帧而言。正如文档中指出的,“即使数据未排序,索引也能工作,但效率相当低(并显示 PerformanceWarning)”。我发现的一些文章似乎表明,对于多索引数据框,如果您调用了sort_index()数据框,Pandas 将使用基于二进制搜索的索引;否则,它只是线性扫描行。

我的问题是

  1. 单索引数据帧是否使用基于哈希的索引?
  2. 如果不是问题1,它在sort_index()调用时是否使用二分搜索,否则是否使用线性扫描,就像多索引数据帧的情况一样?
  3. 如果问题 1 是肯定的,为什么 Pandas 选择不使用基于哈希的索引来进行多索引?