我有一个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
这是一个非常简单的循环,但速度非常慢,我确信有一个更智能的解决方案。也许它甚至可以在一次操作中完成。
非常感谢任何想法或建议。
答案 0 :(得分:1)
1。 data_time - targer_time 2。 找出每个id的最小正负最小值