python - 如何使这个数据框查找操作更快?
问题描述
我在熊猫中有两个数据框。一个是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。如果测试数据足够大到百万行,则该算法非常糟糕。
我想知道是否有其他方法可以加快速度。非常感谢。
-斯特凡
解决方案
推荐阅读
- django - Systemd:在脚本执行结束时记录消息
- symfony - 如何在 Shopware 6 中覆盖订阅者?
- python - 在多处理中无法调用 Loky 支持的并行循环,使用 scikit-learn 设置 n_jobs=1
- google-cloud-platform - 在 gcp firestore 中设置外键和主键
- php - Laravel 在请求数据时调用未定义的方法 HasMany::mapInto()
- angularjs - 第 3 方指令中的 angularjs 测试更改
- data-modeling - 我可以在 toad 数据建模器中指定数据库吗?
- python - 使用python脚本远程触发作业后如何将jenkins作业输出传递给python
- javascript - 如何在不删除错位标签的情况下操作 HTML 字符串?
- python-3.x - ubuntu 中 OpenCV imshow 中的缩放功能