如何使这个数据帧查找操作更快?

2024-03-19 11:19:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个熊猫数据帧。一个是testdata,另一个是refdata。两个数据帧都有一个名为“timestamp”的列。像这样:

timestamp
197888.000,
197888.100,
197888.200,
197888.300,
197888.400,
...

我想从refdata中为测试数据的每一行找到合适的引用数据索引。我使用“apply”方法。你知道吗

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\u数据应该是两个项目。你知道吗

我遇到的问题是这个算法非常慢,大约1300ns。如果测试数据足够大,多达百万行,那么算法就相当糟糕。你知道吗

我想知道是否有其他方法可以让这更快。非常感谢你。你知道吗

-斯特凡


Tags: 数据方法lambda算法indexthresholdslicetimestamp