【发布时间】:2020-04-09 15:20:00
【问题描述】:
我有一个数据框 (df),其中包含名为 date、Year、Month、Day、Hour 和 Energy 的列。这是多年时间序列,我想将其转换为平均单年时间序列(8760 点,即 365 * 24 点),其中 Energy_Mean 列是平均值。
df 是
date Year Month Day Hour Energy
1/1/1999 0:00 1999 Jan 1 1 45.0
1/1/1999 1:00 1999 Jan 1 2 73.5
1/1/1999 2:00 1999 Jan 1 3 82.4
1/1/1999 3:00 1999 Jan 1 4 90.0
1/1/1999 4:00 1999 Jan 1 5 72.2
.
.
.
12/31/1999 23:00 1999 Dec 12 24 77.0
.
.
.
12/31/2019 23:00 2019 Dec 12 24 84.3
任务是将其转换为如下所示的平均形式:
Month Day Hour Energy_Mean
Jan 1 1 22.45
Jan 1 2 73.5
Jan 1 3 57.4
Jan 1 4 88.0
Jan 1 5 33.2
.
.
.
Dec 31 24 77.0
试图弄清楚 pivot_table 或 groupby 是否是 pandas 用于将时间序列转换为 8760 计数数据帧的更好方法。此外,我希望输出按月份排序,而不是按字母顺序排序。比如一月、二月、三月、四月而不是四月、八月……
我的代码是:
p50_8760 = df.groupby(['Month', 'Day', 'Hour'])['Energy'].mean()
df_p50_8760 = p50_8760.to_frame()
输出文件没有列名或 8760 个数据点的数据点计数。
【问题讨论】:
标签: python timestamp time-series pivot-table pandas-groupby