我有一个数据框,时间戳作为索引,数据的频率为10分钟。
我无法找到计算从h - 30min
到h + 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循环,并查找每个确切的小时,然后计算特定小时周围的间隔的平均值,但我找不到一种简单的索引方法一小时左右的数据。在熊猫中有一种简单的方法吗?感谢。
答案 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