【问题标题】:For Loop to average datetime data [duplicate]For循环平均日期时间数据[重复]
【发布时间】:2020-04-27 09:14:38
【问题描述】:

我正在尝试根据月份对各列数据进行平均。例如。求 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 年)。

非常感谢任何帮助!

【问题讨论】:

    标签: python pandas loops datetime average


    【解决方案1】:

    使用DataFrame.resample

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

    pd.GrouperDataFrame.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 (year,month) DataFrame。

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

    【讨论】:

      猜你喜欢
      • 2013-09-22
      • 1970-01-01
      • 2016-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多