【问题标题】:Hourly average for each week/month in dataframe (moving average)数据框中每周/每月的每小时平均值(移动平均值)
【发布时间】:2017-11-12 05:56:01
【问题描述】:

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

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()

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

谢谢!!

【问题讨论】:

    标签: python pandas dataframe average moving-average


    【解决方案1】:

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

    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()
    

    【讨论】:

      猜你喜欢
      • 2018-12-19
      • 2015-05-11
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 2018-06-22
      • 2017-12-23
      • 2013-12-24
      • 2023-03-06
      相关资源
      最近更新 更多