数据框中每个 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()
我有一个数据框,其中包含每秒值的全年数据:
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()