我有几次旅行的数据框架,看起来像这样:
TripID Lat Lon time delta_t
0 1 53.55 9.99 74 1
1 1 53.58 9.99 75 1
2 1 53.60 9.98 76 5
3 1 53.60 9.98 81 1
4 1 53.58 9.99 82 1
5 1 53.59 9.97 83 NaN
6 2 52.01 10.04 64 1
7 2 52.34 10.05 65 1
8 2 52.33 10.07 66 NaN
如您所见,我有位置和时间的记录,这些记录都属于某个行程,由行程ID标识。我还计算了
delta_t
作为一个时间,直到在旅行中跟随的入口。每个行程的最后一个条目被分配
NaN
作为其
三角洲
.
现在,我需要确保我的记录的时间步长在所有数据中都是相同的值。对于这个例子,我使用了一个时间单位。在大多数情况下,旅行确实满足了这一条件,但偶尔我会有一个单一的记录,比如2号记录,在一次很好的旅行中,却没有。
这就是为什么我想在这一点上把我的旅行简单地分成两次。但我还是被卡住了。我似乎找不到一个好方法来做这件事。
为了单独考虑每一次旅行,我想到了这样的事情:
for key, grp in df.groupby('TripID'):
然而,循环中的实际拆分是我不知道如何做的。基本上,我需要为每个条目分配一个新的旅行ID
三角洲
到下一个(或旅行结束),或进行某种分组操作,可以在这些大型
三角洲
.
我知道这是一个非常具体的问题。我希望有人知道怎么做。
我觉得新的
南
S,这将是必要的,可以被忽略,并很容易添加到后面的这一行(我知道这只适用于上升的旅行ID):
df.loc[df['TripID'].diff().shift(-1) > 0, 'delta_t'] = np.nan