Dan*_*Dan 2 python gps python-2.7 python-3.x pandas
我有大量时间戳的GPS数据样本,用于文本文件格式的许多车辆.每辆车数据都有一个唯一的ID.我轻松地创建了一个Pandas数据帧,然后意识到每个车辆的GPS数据实际上是几个月的连续轨道.
我想做的是通过分割GPS报告中的差距超过某个增量(例如10分钟)的轨道来隔离个别旅程.我不认为我可以假设一个旅程的结束和下一个旅程的开始之间的位置没有变化(尽管它/应该/非常接近).
uid ts lat lon
ABC 2017-01-01 00:00:00 0.0000 0.0000
ABC 2017-01-01 00:00:05 0.0000 0.0100
ABC 2017-01-01 00:00:10 0.0000 0.0200
ABC 2017-01-01 00:10:00 0.0100 0.0300 <--- New Journey. 10 min delta
ABC 2017-01-01 00:10:05 0.0100 0.0400
ABC 2017-01-01 00:10:10 0.0100 0.0500
ABC 2017-01-01 00:10:15 0.0100 0.0600
DEF 2017-01-01 20:00:00 1.0000 1.0000
DEF 2017-01-01 20:00:05 1.0000 1.0100
DEF 2017-01-01 20:00:10 1.0000 1.0200
DEF 2017-01-01 20:20:00 1.0100 1.0300 <--- New Journey. 20 min delta
DEF 2017-01-01 20:20:05 1.0100 1.0400
DEF 2017-01-01 20:20:10 1.0100 1.0500
DEF 2017-01-01 20:20:15 1.0100 1.0600
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议我如何有效地隔离单独的旅程?Pandas的解决方案绝对不是必需的.
以下内容将数据帧拆分为数据帧df列表:
delta = pd.to_timedelta(10, unit='m')
breaks = df['ts'].diff() > delta # Feel free to add other conditions!
#0 False
#....
#6 False
#7 True
#8 False
#9 False
#10 True
#11 False
#12 False
#13 False
#Name: ts, dtype: bool
break_locs = df[breaks].index
#Int64Index([7, 10], dtype='int64')
trips = np.array_split(df, break_locs)
#[ uid ts lat lon
#0 ABC 2017-01-01 00:00:00 0.00 0.00
#1 ABC 2017-01-01 00:00:05 0.00 0.01
#2 ABC 2017-01-01 00:00:10 0.00 0.02
#3 ABC 2017-01-01 00:10:00 0.01 0.03
#4 ABC 2017-01-01 00:10:05 0.01 0.04
#5 ABC 2017-01-01 00:10:10 0.01 0.05
#6 ABC 2017-01-01 00:10:15 0.01 0.06, uid ts lat lon
#7 DEF 2017-01-01 20:00:00 1.0 1.00
#8 DEF 2017-01-01 20:00:05 1.0 1.01
#9 DEF 2017-01-01 20:00:10 1.0 1.02, uid ts lat lon
#10 DEF 2017-01-01 20:20:00 1.01 1.03
#11 DEF 2017-01-01 20:20:05 1.01 1.04
#12 DEF 2017-01-01 20:20:10 1.01 1.05
#13 DEF 2017-01-01 20:20:15 1.01 1.06]
len(trips)
#3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |