我对python和pandas相当陌生,因此对以后的误会深表歉意。
我有一个带有每小时值的pandas DataFrame,看起来像这样:
2014-04-01 09:00:00 52.9 41.1 36.3 2014-04-01 10:00:00 56.4 41.6 70.8 2014-04-01 11:00:00 53.3 41.2 49.6 2014-04-01 12:00:00 50.4 39.5 36.6 2014-04-01 13:00:00 51.1 39.2 33.3 2016-11-30 16:00:00 16.0 13.5 36.6 2016-11-30 17:00:00 19.6 17.4 44.3
现在,我需要计算从2014-04-01 12:00到2014-04-02 11:00开始的每一列的24小时平均值,因此我想每天从中午到中午。
不幸的是,我不知道该怎么做。我已经阅读了一些有关使用groupby的建议,但是我真的不知道如何...
提前非常感谢您!任何帮助表示赞赏!
base
说法。一天是24小时,因此以12为基数的分组将从Noon-Noon开始。重采样为您提供介于两天之间的所有时间,因此,.dropna(how='all')
如果您不需要完整的基础,则可以。(我假设您有一个DatetimeIndex
,如果没有,则可以使用on
resample参数指定日期时间列。)
df.resample('24H', base=12).mean() #df.groupby(pd.Grouper(level=0, base=12, freq='24H')).mean() # Equivalent 1 2 3 0 2014-03-31 12:00:00 54.20 41.30 52.233333 2014-04-01 12:00:00 50.75 39.35 34.950000 2014-04-02 12:00:00 NaN NaN NaN 2014-04-03 12:00:00 NaN NaN NaN 2014-04-04 12:00:00 NaN NaN NaN ... ... ... ... 2016-11-26 12:00:00 NaN NaN NaN 2016-11-27 12:00:00 NaN NaN NaN 2016-11-28 12:00:00 NaN NaN NaN 2016-11-29 12:00:00 NaN NaN NaN 2016-11-30 12:00:00 17.80 15.45 40.450000