对 Pandas 中较低频率区间中的较高频率数据进行计算

Doing calculations on higher frequency data in lower frequency bins in Pandas

我在 pandas 数据框中有一些数据,在几个小时内有每秒级别的条目。条目按日期时间格式索引为 TIMESTAMP。我想在每分钟内对所有数据进行分组并进行一些计算和操作。也就是说,我想把09:00:00到09:00:59内的所有数据都拿出来,汇报一下这一分钟发生的一些事情。然后我想从 09:01:00 到 09:01:59 等进行相同的计算和操作,直到我的数据集结束。

我一直在摆弄 groupby().resample() 但到目前为止我没有成功。我可以想到一种非常不优雅的方法来使用一系列 for 循环和 if 语句,但我想知道这里是否有更简单的方法。

你没有提供任何数据或代码,所以我会补充一些。您也没有指定要进行的计算,所以我只是取平均值:

>>> import numpy as np
>>> import pandas as pd
>>> dates = pd.date_range("1/1/2020 00:00:00", "1/1/2020 03:00:00", freq="S")
>>> values = np.random.random(len(dates))
>>> df = pd.DataFrame({"dates": dates, "values": values})
>>> df.resample("1Min", on="dates").mean().reset_index()
                  dates    values
0   2020-01-01 00:00:00  0.486985
1   2020-01-01 00:01:00  0.454880
2   2020-01-01 00:02:00  0.467397
3   2020-01-01 00:03:00  0.543838
4   2020-01-01 00:04:00  0.502764
..                  ...       ...
236 2020-01-01 03:56:00  0.478224
237 2020-01-01 03:57:00  0.460435
238 2020-01-01 03:58:00  0.508211
239 2020-01-01 03:59:00  0.415030
240 2020-01-01 04:00:00  0.050993

[241 rows x 2 columns]