熊猫是否对单个索引的数据帧使用散列,而对多索引的数据帧使用二进制搜索?

时间:2020-03-03 03:38:56

标签: python pandas dataframe

我一直给人的印象是,Pandas在对数据帧中的行进行索引时会使用哈希,因此df.loc [some_label]之类的操作为O(1)。

但是,我今天才意识到情况并非如此,至少对于多索引数据帧而言并非如此。正如document中指出的那样,“即使数据没有排序,索引也会起作用,但是效率很低(并显示PerformanceWarning)”。我发现有些文章似乎建议,对于多索引数据框,如果您已在数据框上调用sort_index(),则Pandas将使用基于二进制搜索的索引。否则,它只会线性扫描行。

我的问题是

  1. 单索引数据帧是否使用基于哈希的索引?
  2. 如果不是问题1,那么在调用sort_index()时是否使用二进制搜索,否则使用线性扫描(例如在多索引数据帧的情况下)?
  3. 如果对问题1回答为“是”,为什么熊猫也选择不对多索引同时使用基于哈希的索引?

0 个答案:

没有答案