0

我正在尝试分析船舶 AIS 数据。我有一个约 20,000 行的 CSV,其中包含纬度/经度/速度/时间戳的列。

我已在 Jupyter 笔记本中的 pandas 数据框中加载数据。

我想要做的是根据时间戳和速度将 CSV 拆分为更小的 CSV,所以我想要一个单独的 CSV 用于船舶速度小于 2 节的每个时间段,例如,如果船舶以 10 节的速度通过6 小时,然后减速到 1 节,持续 3 小时,加速 10 节,然后再次减速到 1 节,持续 4 小时,我希望输出是两个 CSV,一个用于3小时一个周期,一个4小时周期。这样我就可以在我的地图软件中单独查看这些时间段。

我可以轻松过滤数据以显示小于 1 节的所有周期,但我无法将其分解以将连续周期输出为单独的 CSV/数据帧。 编辑

这是数据的示例

我试图更清楚地展示我想要在这里实现的目标

4

1 回答 1

0

这里有一些东西可以让你开始。

首先过滤掉所有符合条件的值(例如下面的2):

df = pd.DataFrame({'speed':[2,1,4,5,4,1,1,1,3,4,5,6], 'time':[4,5,6,7,8,9,10,11,12,13,14,15]})
df_below2 = df[df['speed']<=2].reset_index(drop=True)

现在,如果时间间隙 btw 值太长,我们需要拆分帧。例如:

threshold = 2
df_below2['not_continuous']  = df_below2['time'].diff() > threshold

使用 cum 区分组:

df_below2['group_id'] = df_below2['not_continuous'].cumsum()

从这里应该很容易根据组 ID 拆分帧。

于 2020-04-30T10:34:16.293 回答