【发布时间】:2018-03-08 07:04:09
【问题描述】:
我有一个包含多辆车的日期时间位置数据的 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
这对于循环来说非常简单,但速度非常慢,我相信有一个更智能的解决方案。也许甚至可以在一次操作中完成。
任何想法或建议将不胜感激。
【问题讨论】:
标签: python pandas datetime pandas-groupby