使用datetime之前和之后的位置从DataFrame插值位置

时间:2017-09-26 22:47:56

标签: python pandas datetime pandas-groupby

我有一个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

我希望能够做的是获取前后的位置/等于给定的日期时间值,以便我可以在那时插入可能的位置。类似的东西:

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 个答案:

答案 0 :(得分:1)

1。 data_time - targer_time 2。 找出每个id的最小正负最小值