Pandas 熊猫数据帧组(按每周小时)
我有一个数据框,其中包含一所房子(ID)的每小时千瓦时能耗(消耗),持续时间为几个月,例如:Pandas 熊猫数据帧组(按每周小时),pandas,time-series,Pandas,Time Series,我有一个数据框,其中包含一所房子(ID)的每小时千瓦时能耗(消耗),持续时间为几个月,例如: ID Consumption DateTime 2016-07-01 01:00:00 1642 0.703400 2016-07-01 02:00:00 1642 0.724033 2016-07-01 03:00:00 1642 0.747300 2016-07-0
ID Consumption
DateTime
2016-07-01 01:00:00 1642 0.703400
2016-07-01 02:00:00 1642 0.724033
2016-07-01 03:00:00 1642 0.747300
2016-07-01 04:00:00 1642 0.830450
2016-07-01 05:00:00 1642 0.704917
2016-07-01 06:00:00 1642 0.708467
2016-07-01 07:00:00 1642 0.806533
2016-07-01 08:00:00 1642 0.774483
2016-07-01 09:00:00 1642 0.724833
2016-07-01 10:00:00 1642 0.721900
2016-07-01 11:00:00 1642 0.729450
2016-07-01 12:00:00 1642 0.757233
2016-07-01 13:00:00 1642 0.744667
这里DateTime是类型的索引。我的目标是找出一周中每小时的平均消耗量和方差,即(24*7=168小时)
我试过了
print (df.groupby(df.index.week)['Consumption'].transform('mean'))
然而,这并没有给出正确的结果,如何在大熊猫身上做到这一点?任何帮助都将不胜感激。我认为您需要带有and的
groupby
,但需要添加1
,因为两者中的第一个值都是0
。然后聚集平均值:
df1 = (df.groupby((df.index.dayofweek + 1) * (df.index.hour + 1))['Consumption'].mean()
.rename_axis('HourOfWeek')
.reset_index())
print (df1)
HourOfWeek Consumption
0 10 0.703400
1 15 0.724033
2 20 0.747300
3 25 0.830450
4 30 0.704917
5 35 0.708467
6 40 0.806533
7 45 0.774483
8 50 0.724833
9 55 0.721900
10 60 0.729450
11 65 0.757233
12 70 0.744667
即使迟到:我也有类似的问题,我不认为上面的答案是正确的,应该是正确的
df.groupby((df.index.dayofweek) * 24 + (df.index.hour)).mean().rename_axis('HourOfWeek')
在上面提到的答案中,由于指定的组不是唯一的,因此您最终会得到不需要的组合,例如,周一下午2点与周二上午1点一起分组,等等。df.groupby(df.index.dayofweek*df.index.hour)['consumpion'].transform('mean')
?@fabhof的答案应该是正确的,但这确实是错误的。
df.groupby((df.index.dayofweek) * 24 + (df.index.hour)).mean().rename_axis('HourOfWeek')