python - 使用特定时间间隔对 pandas 时间序列数据框进行分组

标签 python csv pandas

我有一个很大的 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方法,也许使用 lambdadf.groupby(lambda x:x.minutes + 5)这会产生错误 AttributeError: 'str' object has no attribute 'minutes' .

基本上我有点困惑 a) pandas 是否具有它识别的格式的时间序列数据 dtypeobject ,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/

相关文章:

python - 如何在数据库中存储词袋或嵌入

python脚本一个月后无故停止(没有错误消息)

java - 将文本文件中转储的文本转换为 Csv 和数组

python-3.x - 如何使用 pandas python 对特定列进行操作第 3 部分

python - RANSAC 算法在 cv2.FindHomography 中使用哪些内点来查找单应性矩阵?

python - 无法在 Scientific Linux 上为 python2.7 构建 mod_wsgi

java - 如何以对未闭合的双引号字符具有鲁棒性的方式解析大型 CSV 文件?

python - 提速生成器->列表-> Python中的CSV

python - 如何使用过滤器获取python数据框列名

python - 如何用pandas中的条件替换两列?