计算数据帧中精确小时周围的区间平均值

时间:2017-10-10 15:26:15

标签: python pandas

我有一个数据框,时间戳作为索引,数据的频率为10分钟。

我无法找到计算从h - 30minh + 30min的区间中的均值的方法,其中h都是确切的小时数(点钟小时)。

In[1]: date_index = pd.date_range('2015-12-01 00:00:00', freq='10Min', periods=70)
       df = pd.DataFrame(np.random.rand(70), index= date_index, columns=['Data'])
       df.head(10)

Out[1]:                  Data
2015-12-01 00:00:00  0.653885
2015-12-01 00:10:00  0.605046
2015-12-01 00:20:00  0.438547
2015-12-01 00:30:00  0.062426
2015-12-01 00:40:00  0.415468
2015-12-01 00:50:00  0.458047
2015-12-01 01:00:00  0.523140
2015-12-01 01:10:00  0.736519
2015-12-01 01:20:00  0.934904
2015-12-01 01:30:00  0.799523

我正在考虑使用带有df.index作为范围的for循环,并查找每个确切的小时,然后计算特定小时周围的间隔的平均值,但我找不到一种简单的索引方法一小时左右的数据。在熊猫中有一种简单的方法吗?感谢。

1 个答案:

答案 0 :(得分:3)

不确定此处的确切预期输出,但您可以先每半小时重新采样数据,然后找到滚动平均值,得到1.5小时的平均值。

df.resample('30T').mean().rolling(3, center = True).mean()

    Data
2015-12-01 00:00:00 NaN
2015-12-01 00:30:00 0.419649
2015-12-01 01:00:00 0.427544
2015-12-01 01:30:00 0.414868
2015-12-01 02:00:00 0.545400
2015-12-01 02:30:00 0.643669
2015-12-01 03:00:00 0.626265
2015-12-01 03:30:00 0.581142
2015-12-01 04:00:00 0.508442
2015-12-01 04:30:00 0.511635
2015-12-01 05:00:00 0.452952
2015-12-01 05:30:00 0.473471
2015-12-01 06:00:00 0.400974
2015-12-01 06:30:00 0.358676
2015-12-01 07:00:00 0.244290
2015-12-01 07:30:00 0.343688
2015-12-01 08:00:00 0.456954
2015-12-01 08:30:00 0.548263
2015-12-01 09:00:00 0.431159
2015-12-01 09:30:00 0.378981
2015-12-01 10:00:00 0.407988
2015-12-01 10:30:00 0.496860
2015-12-01 11:00:00 0.508232
2015-12-01 11:30:00 NaN