For Loop 平均日期时间数据

For Loop to average datetime data

我正在尝试根据月份计算各列数据的平均值。例如。求 2019 年 4 月 B 的平均值。

Date        A       B       C       D
2012-04-01  173.53  10.81   133.96  28.75
2012-04-02  197.99  10.92   147.91  39.17
2012-04-03  211.35  10.97   164.73  35.64
2012-04-04  249.39  11.02   200.62  37.75
2012-04-05  233.59  11.39   187.57  34.64

我已经想出如何根据月份和年份计算每一列的平均值;

index = pd.date_range('2012 04 01', '2019, 12, 31', freq='1MS')

apr12 = (demdf.index.year==2012) & (demdf.index.month==4)
apr12ave = demdf.loc[apr12].mean(axis=0)

但我不知道如何创建一个循环来循环并获取每年每个月的平均值(数据集从 2014 年到 2019 年)。

非常感谢任何帮助!

使用DataFrame.resample

#df['Date'] = pd.to_datetime(df['Date'])
df.resample('M',on='Date').mean()

pd.Grouper with DataFrame.groupby

#df['Date'] = pd.to_datetime(df['Date'])
df.groupby(pd.Grouper(freq = 'M',key='Date')).mean()

输出

                 A       B        C      D
Date                                      
2012-04-30  213.17  11.022  166.958  35.19

如果你想要一个MultiIndex(年,月)DataFrame。

df.groupby([df.Date.dt.year,df.Date.dt.month]).mean()