gpt4 book ai didi

python - 将连续的 GPS 数据拆分为单独的旅程

转载 作者:行者123 更新时间:2023-11-28 21:41:43 24 4
gpt4 key购买 nike

我有大量文本文件格式的带有时间戳的 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

谁能建议我如何有效地隔离单独的旅程? 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

关于python - 将连续的 GPS 数据拆分为单独的旅程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44479400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com