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

Does Pandas use hashing for a single-indexed dataframe and binary searching for a multi-indexed dataframe?

提问人:victorx 提问时间:3/3/2020 最后编辑:Kirill Kondratenkovictorx 更新时间:11/6/2023 访问量:525

问:

我一直认为 Pandas 在为 DataFrame 中的行编制索引时使用哈希,以便像 .df.loc[some_label]O(1)

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

我的问题是

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

评论

2赞 Bananin 4/30/2020
我将根据我使用 >4GB 数据帧的经验来回答。1. 不可以。loc 操作随大小扩展不良。我想知道为什么,这似乎是自然的选择。2. 我的计算从先前对索引的排序中获得了巨大的提升,所以至少它是一种更智能的算法。不过,我不知道多索引会发生什么。3. 空。懒得为所有这些写速度实验,但它们听起来很容易做到!

答: 暂无答案