如何提高数据框中的搜索索引

数据挖掘 Python 熊猫 表现 数据框 搜索
2022-03-04 01:52:27

给定一个带有时间戳索引的 pandas 数据帧,已排序。我有一个标签,我需要找到最接近该标签的索引。另外,我需要找到一个较小的时间戳,因此应该在较小的时间戳中计算搜索。这是我的代码:

import pandas as pd
import datetime

data = [i for i in range(100)]
dates = pd.date_range(start="01-01-2018", freq="min", periods=100)
dataframe = pd.DataFrame(data, dates)

label = "01-01-2018 00:10:01"
method = "pad"
tol = datetime.timedelta(seconds=60)
idx = dataframe.index.get_loc(key=label, method="pad", tolerance=tol)

print("Closest idx:"+str(idx))
print("Closest date:"+str(dataframe.index[idx]))

搜索太慢了。有没有办法改进它?

1个回答

可能没有考虑到dates已排序并因此执行为 O(n)。尝试在 上使用二进制搜索dates,这将执行为 O(log(n)) (避免实现自己的,寻找标准模块,也许它存在于 numpy 中)。