删除数据时间戳并仅每小时获取一次数据python

Posted

技术标签:

【中文标题】删除数据时间戳并仅每小时获取一次数据python【英文标题】:Remove data timestamp and get data only every hours python 【发布时间】:2020-01-27 02:56:49 【问题描述】:

我在 csv 文件中有一堆时间戳数据,如下所示:

2012-01-01 00:00:00, data
2012-01-01 00:01:00, data
2012-01-01 00:02:00, data
      ...
2012-01-01 00:59:00, data
2012-01-01 01:00:00, data
2012-01-01 01:01:00, data

我想每分钟删除一次数据,并且只在 python 中每小时显示一次,如下所示:

2012-01-01 00:00:00, data
2012-01-01 01:00:00, data
2012-01-01 02:00:00, data

谁能帮帮我?谢谢。

【问题讨论】:

欢迎来到 Stack Overflow。在本论坛中,希望您先研究问题并尝试解决问题。请在此处显示您尝试过的代码。 请澄清什么是结果数据,您将省略数据并保留特定数据或对它们进行处理,如 sum、averag 或.. 【参考方案1】:

我相信你需要使用 pandas resample,这是一个如何使用它来实现你想要的输出的例子。但是,请记住,由于这是频率转换期间的重采样操作,因此您必须传递一个函数来了解其他列的行为方式(将与新时间帧对应的所有值相加、计算平均值、计算差异等...... ) 否则您将收到DatetimeIndexResample。这是一个例子:

import pandas as pd
index = pd.date_range('1/1/2000', periods=9, freq='40T')
series = pd.Series(range(9),index=index)
print(series)

输出:

2000-01-01 00:00:00    0
2000-01-01 00:40:00    1
2000-01-01 01:20:00    2
2000-01-01 02:00:00    3
2000-01-01 02:40:00    4
2000-01-01 03:20:00    5
2000-01-01 04:00:00    6
2000-01-01 04:40:00    7
2000-01-01 05:20:00    8

每小时应用resample传递聚合函数:

print(series.resample('H'))

输出:

DatetimeIndexResampler [freq=<Hour>, axis=0, closed=left, label=left, convention=start, base=0]

通过.sum()后:

print(series.resample('H').sum())

输出:

2000-01-01 00:00:00     1
2000-01-01 01:00:00     2
2000-01-01 02:00:00     7
2000-01-01 03:00:00     5
2000-01-01 04:00:00    13
2000-01-01 05:00:00     8
Freq: H, dtype: int64

【讨论】:

以上是关于删除数据时间戳并仅每小时获取一次数据python的主要内容,如果未能解决你的问题,请参考以下文章

Firefox 的 MediaRecorder 接口仅每两秒提供一次新的视频数据

是否可以从 excel 导出中删除列组行并仅获取平面数据

如何防止气流回填dag运行?

如何防止气流回填 dag 运行?

PHP,从mysql加载时间戳并转换为时间前字符串

Bigquery crashlytics 数据集计划间隔