获取数据框中特定列每小时的平均值

Getting the average value of each hour for specific columns in data frame

我有一个数据框,其中 date/time 作为“parse_dates”传递,然后设置为数据框的索引列。

                      Flow  Enter  Leave    kWE          kW
Time                                                       
2021-08-30 08:50:00  24.22   14.0    5.7  66.56  619.478012
2021-08-30 08:51:00  24.22   14.0    5.7  66.56  619.478012

我想每小时和每天获取列 'kWE' 和 'Flow' 的平均值,但我不确定如何在 date/time 设置为时提取数据索引。

您可以使用每小时 (h) 频率的 resample

cols = ['Flow', 'kWE']
df.resample('h')[cols].mean()

输出:

                      Flow    kWE
Time                             
2021-08-30 08:00:00  24.22  66.56

或使用 origin='start' 以第一个值作为起点。

注意不同的索引。这里的结果是相同的,但这可能会根据行的聚类方式在更大的数据上给出不同的输出:

df.resample('h', origin='start')[cols].mean()

输出:

                      Flow    kWE
Time                             
2021-08-30 08:50:00  24.22  66.56

使用:

 #Preparing data

string = """Time  Flow  Enter  Leave  kWE  kW
2021-08-30 08:50:00  24.22  14.0  5.7  66.56  619.478012
2021-08-30 08:51:00  24.22  14.0  5.7  66.56  619.478012"""

data = [x.split('  ') for x in string.split('\n')]
df = pd.DataFrame(data[1:], columns = data[0])
df['Time']=pd.to_datetime(df['Time'])
df = df.set_index('Time')

#Solution, daily and hourly averages:
df.groupby(df.index.day)[['kWE', 'Flow']].mean()
df.groupby(df.index.hour)[['kWE', 'Flow']].mean()