如何计算熊猫数据框中在不同日期同时(n小时窗口)进行的测量的平均值?

时间:2018-07-30 16:19:49

标签: python pandas mean

我有一个数据集,其一周几乎每2小时获取一次测量结果。我想计算不同日期在同一时间进行的测量的平均值。例如,我要计算在12:00和13:59之间进行的每次测量的平均值。

import pandas as pd
import numpy as np
from datetime import datetime, timedelta

#generating test dataframe
date_today = datetime.now()
time_of_taken_measurment = pd.date_range(date_today, date_today + 
timedelta(72), freq='2H20MIN')

np.random.seed(seed=1111)
data = np.random.randint(1, high=100, 
size=len(time_of_taken_measurment))
df = pd.DataFrame({'measurementTimestamp': time_of_taken_measurment, 'measurment': data})
df = df.set_index('measurementTimestamp')

#Calculating the mean for measurments taken in the same hour
hourly_average = df.groupby([df.index.hour]).mean() 
hourly_average

上面的代码给了我这个输出:

0   47.967742
1   43.354839
2   46.935484
  .....
22  42.833333
23  52.741935

我想要这样的结果:

0   mean0
2   mean1
4   mean2
  .....
20  mean10
22  mean11

我试图使用rolling_mean函数来解决我的问题,但是我找不到将其应用于静态案例的方法。

1 个答案:

答案 0 :(得分:2)

使用datetimeIndex的内置floor功能,该功能可让您轻松创建2小时制的时间段。

df.groupby(df.index.floor('2H').time).mean()

输出:

          measurment
00:00:00   51.516129
02:00:00   54.868852
04:00:00   52.935484
06:00:00   43.177419
08:00:00   43.903226
10:00:00   55.048387
12:00:00   50.639344
14:00:00   48.870968
16:00:00   43.967742
18:00:00   49.225806
20:00:00   43.774194
22:00:00   50.590164