数据框中每个 week/month 的每小时平均值(移动平均值)

Hourly average for each week/month in dataframe (moving average)

我有一个数据框,其中包含每秒值的全年数据:

YYYY-MO-DD HH-MI-SS_SSS      TEMPERATURE (C)
2016-09-30 23:59:55.923       28.63
2016-09-30 23:59:56.924       28.61
2016-09-30 23:59:57.923       28.63
   ...                         ...
2017-05-30 23:59:57.923       30.02

我想创建一个新的数据框,它获取每周或每月的值,并在每天的同一小时内对它们进行平均(一种移动平均线,但每小时)。 所以月份案例的结果将是这样的:

       Date         TEMPERATURE (C)
2016-09 00:00:00       28.63
2016-09 01:00:00       27.53
2016-09 02:00:00       27.44
   ...
2016-10 00:00:00       28.61
   ...                  ...

我知道我可以将每个月的 df 分成 12 个 df 并使用:

hour = pd.to_timedelta(df['YYYY-MO-DD HH-MI-SS_SSS'].dt.hour, unit='H')
df2 = df.groupby(hour).mean()

但我正在寻找更好更快的方法。

谢谢!!

这是转换日期和时间列的另一种方法:

df['datetime'] = pd.to_datetime(df['YYYY-MO-DD'] + ' ' + df['HH-MI-SS_SSS'])

此外,您可以 groupby 每周和每小时形成一个 MultiIndex 数据框(而不是创建和管理 12 个 dfs):

df.groupby([df.datetime.dt.weekofyear, df.datetime.dt.hour]).mean()