如何使用Pandas根据值和连续时间段将带时间戳的CSV数据拆分为多个CSV



我正在尝试分析船舶AIS数据。我有一个CSV,大约有20000行,列代表lat/long/speed/time stamp。

我已经将数据加载到Jupyter笔记本上的熊猫数据框中。

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

我可以很容易地过滤数据,以显示它<1节,但我无法将其分解为单独的CSV/数据帧来输出连续的周期。编辑

以下是数据的示例

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

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

首先过滤掉所有符合标准的值(例如下面的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

使用cums:区分各组

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

从这里开始,应该可以很容易地根据组id分割帧。

最新更新