我在熊猫中有两个数据框。一个是testdata,另一个是refdata。两个数据框都有一个名为“时间戳”的列。像这样:
timestamp
197888.000,
197888.100,
197888.200,
197888.300,
197888.400,
...
我想从refdata中为测试数据的每一行找到正确的参考数据索引。我为此使用“应用”方法。
index = testdata.apply(lambda x: locate_refindex(x.timestamp, refdata, threshold), axis=1)
在locate_refindex函数中,最关键的算法是以下语句:
def locate_refindex(timestamp, refdata, threshold):
...
slice_data = refdata[abs(refdata['timestamp'] - timestamp) <= threshold]
...
查找与测试数据最近的refdata行。例如,如果我的testdata行的时间戳为197888.100,阈值为0.099,则slice_data应该为两项。
我遇到的问题是该算法非常慢,大约1300ns。如果测试数据足够大以至于多达一百万行,那么该算法就很糟糕。
我想知道是否还有其他方法可以使此过程更快。非常感谢。
-Stefan