我有一个数据框 df:
Year Month Day Hour Minute Reading
2011 1 1 0 0 1
2011 1 1 0 15 0.2
2011 1 1 0 30 0.4
2011 1 1 0 45 0.0
2011 1 1 1 0 0.2
2011 1 1 1 15 0.5
2011 1 1 1 30 0.3
2011 1 1 1 45 0.1
上面的数据帧有 15 分钟的间隔数据。我希望添加一个新列并获得每 4 个读数的总和,从而将其转换为每小时数据。例如,对于第 0 小时,它是 (1+0.2+0.4+0.0 = 1.6)。
因此我的输出应该是这样的:
Year Month Day Hour Minute Hourly_Reading
2011 1 1 0 0 1.6
2011 1 1 1 0 1.1
任何人都可以请指导我吗?
您可以使用groupby
:
(df.groupby(['Year','Month','Day','Hour'])['Reading']
.sum()
.reset_index()
.assign(Minutes=0)
.reindex_axis(['Year','Month','Day','Hour','Minutes','Reading'],axis=1))
输出:
Year Month Day Hour Minutes Reading
0 2011 1 1 0 0 1.6
1 2011 1 1 1 0 1.1
使用set_index
和sum
带level
参数:
(df.set_index(['Year','Month','Day','Hour'])['Reading']
.sum(level=[0,1,2,3])
.reset_index()
.assign(Minutes=0)
.reindex_axis(['Year','Month','Day','Hour','Minutes','Reading'],axis=1))
输出:
Year Month Day Hour Minutes Reading
0 2011 1 1 0 0 1.6
1 2011 1 1 1 0 1.1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句