Pandas 根据每小时数据计算每日和每月平均值

use*_*039 1 average date pandas

我有一个 8784 x 13 的 DF (df2),看起来像这样,其中有一个 yyyy-mm-dd 格式的“日期”列和一个以小时为单位的“时间”列,如下所示,我需要计算每日和每月的平均值2016 年:

     DATE  TIME  BAFFIN BAY  GATUN II   GATUN I  KLONDIKE IIIG  \
8759 2016-01-01  0000    8.112838  3.949518  3.291540       7.629178   
8760 2016-01-01  0100    7.977169  4.028678  3.097562       7.477159   

  KLONDIKE II  LAGOA II  LAGOA I  PENASCAL II  PENASCAL I    SABINA  \
8759     7.095450       NaN      NaN     8.250527    8.911508  3.835205   
8760     7.362562       NaN      NaN     7.877099    7.858908  3.766714   

  SIERRA QUEMADA  
8759        3.405049  
8760        4.386598  
Run Code Online (Sandbox Code Playgroud)

我尝试将“DATE”列转换为日期时间以使用 groupby,但我不确定如何执行此操作。我已尝试以下操作,但当我在 Excel 中测试计算时,它没有按日或月平均预期对数据进行分组:

davg_df2 = df2.groupby(by=df2['DATE'].dt.date).mean() #
davg_df2m = df2.groupby(by=df2['DATE'].dt.month).mean() # 
Run Code Online (Sandbox Code Playgroud)

谢谢你,因为我仍在学习 python 并了解如何使用日期和不同的数据类型!

NYC*_*der 5

尝试这个:

df2['DATE'] = pd.to_datetime(df2['DATE'], format='%Y-%m-%d')
# monthly
davg_df2 = df2.groupby(pd.Grouper(freq='M', key='DATE')).mean()
# daily
davg_df2 = df2.groupby(pd.Grouper(freq='D', key='DATE')).mean()
Run Code Online (Sandbox Code Playgroud)