pandas index.searchsorted()有什么作用?

时间:2018-04-19 08:45:32

标签: python pandas dataframe indexing

我正在处理两个数据框df1df2。 我用了代码:

df1.index.searchsorted(df2.index)

但我不确定它是如何运作的。 有人可以解释我怎么样?

1 个答案:

答案 0 :(得分:9)

该方法将binary search应用于索引。这是一个众所周知的算法,它使用的值是已按排序顺序排列,以便在尽可能少的步骤中查找插入索引。

二进制搜索的工作原理是选择值的中间元素,然后将其与搜索到的值进行比较;如果该值低于该中间元素,则将搜索范围缩小到上半部分,或者如果它更大则查看后半部分。

这样,您可以减少查找元素所需的步骤数最多索引长度的日志。 1000个元素,少于7个步骤,100万个元素,少于14个等等。

插入索引是添加值以保持索引按排序顺序的位置; left位置恰好也是匹配值的索引,因此您也可以使用它来查找插入缺失值或重复值的位置,并测试给定值是否为出现在索引中。

pandas实现基本上是numpy.sortedsearch()函数,它使用generated C code来优化对不同对象类型的搜索,挤出每一个最后一滴速度。

Pandas在各种索引实现中使用该方法来确保快速操作。您通常不会使用此方法来测试索引中是否存在值,例如,因为Pandas索引已经为您实现了有效的__contains__方法,通常基于searchsorted()说得通。有关此类示例,请参阅DateTimeEngine.__contains__()