我有一个很大的 csv 文件,其中包含 iso 格式的时间戳数据 2015-04-01 10:26:41
。数据跨越多个月,条目间隔从 30 秒到多个小时不等。它的列是 id、时间、速度。
最终,我想按 15 分钟的时间间隔对数据进行分组,然后计算平均速度,因为无论多少条目都在 15 分钟的时间段内。
我正在尝试使用 Pandas,因为它似乎有一个可靠的时间序列工具,并且可能很容易做到这一点,但我在第一个障碍上就失败了。
到目前为止,我已将 CSV 作为数据框导入,并且所有列的 dtype 均为 object
。我已按日期对数据进行排序,现在正在尝试按时间间隔对条目进行分组,这正是我正在努力的地方。基于谷歌搜索,我尝试resample
使用此代码的数据 df.resample('5min', how=sum)
这里我得到错误TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex
。我正在考虑尝试 groupby
方法,也许使用 lambda
如 df.groupby(lambda x:x.minutes + 5)
这会产生错误 AttributeError: 'str' object has no attribute 'minutes'
.
基本上我有点困惑 a) pandas 是否具有它识别的格式的时间序列数据 dtype
是 object
,b)如果它能识别它,我似乎无法降低时间间隔。
热衷于了解是否有人可以为我指明正确的方向。
DF 看起来像这样
0 1 2 3
0 id boat_id time speed
1 386226 32 2015-01-15 05:14:32 4.2343243
2 386285 32 2015-01-15 05:44:57 3.45234
最佳答案
首先,看起来您读到了一个空白行。您可能想跳过文件中的第一行pd.read_csv(filename,skiprows=1)
。
您应该使用 pd.to_datetime()
将时间的文本表示形式转换为 DatetimeIndex。
df.set_index(pd.to_datetime(df['time']), inplace=True)
然后您应该能够重新采样。
df.resample('15min', how=np.mean)
关于python - 使用特定时间间隔对 pandas 时间序列数据框进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33512115/