使用日期时间之前和之后的位置从 DataFrame 插入位置

Interpolate position from DataFrame using position before and after datetime

我有一个包含多辆车的日期时间位置数据的 DataFrame。日期时间不连续,同一数据集中有多个车辆。数据集非常大,所以我不确定定期重新采样是否真的可行。

     date_time                     uid   lat    lon
1    2017-09-26 18:23:00.000       ABC   1.00   1.00
2    2017-09-26 18:23:12.000       ABC   1.20   1.20   
3    2017-09-26 18:23:48.000       ABC   1.40   1.40
4    2017-09-26 18:23:52.000       ABC   1.50   1.50
5    2017-09-26 18:23:01.000       DEF   0.10   0.10
6    2017-09-26 18:23:04.000       DEF   0.11   0.11
7    2017-09-26 18:23:24.000       DEF   0.30   0.30
8    2017-09-26 18:23:28.000       DEF   0.32   0.32
9    2017-09-26 18:23:40.000       DEF   0.40   0.40
10   2017-09-26 18:23:03.000       GHI   5.70   5.70
11   2017-09-26 18:23:12.000       GHI   5.80   5.80
12   2017-09-26 18:23:24.000       GHI   5.90   5.90
13   2017-09-26 18:23:30.000       GHI   6.00   6.00
14   2017-09-26 18:24:30.000       JKL   0.00   0.00
15   2017-09-26 18.24.35.000       JKL   1.00   1.00

我想做的是获取之前的位置和 after/equal 到给定的日期时间值,以便我可以插入当时可能的位置。类似于:

target_time = '2017-09-26 18:23:12'
mask = df['date_time'] < target_time LIMIT 1 per UID?? & df['date_time'] >= target_time LIMIT 1 per UID??
points = df[mask]

      date_time                     uid   lat    lon
 1    2017-09-26 18:23:00.000       ABC   1.00   1.00
 2    2017-09-26 18:23:12.000       ABC   1.20   1.20   
 6    2017-09-26 18:23:04.000       DEF   0.11   0.11
 7    2017-09-26 18:23:24.000       DEF   0.30   0.30
 10   2017-09-26 18:23:03.000       GHI   5.70   5.70
 11   2017-09-26 18:23:12.000       GHI   5.80   5.80

这是一个非常简单的循环,但它非常慢,我相信有一个更聪明的解决方案。也许甚至可以一次操作完成。

如有任何想法或建议,我们将不胜感激。

1。 data_time - targer_time 2. 为每个 id

找到最小正数和最小负数