首页 > 解决方案 > 如何使这个数据框查找操作更快?

问题描述

我在熊猫中有两个数据框。一个是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 行。例如,如果我有时间戳为 197888.100 的 testdata 行,阈值为 0.099,那么 slice_data 应该是两项。

我遇到的问题是这个算法很慢,大约 1300ns。如果测试数据足够大到百万行,则该算法非常糟糕。

我想知道是否有其他方法可以加快速度。非常感谢。

-斯特凡

标签: pythonpandasnumpydataframe

解决方案


推荐阅读