计算时间序列中同一月之间的平均值

问题描述

我有一个2002年至2018年之间的数据集,每月包含1个值,总共198行。

我想知道如何对同一月(例如2003年1月/ + ... + 1月/ 2018年)的所有值求平均值

dateparse = lambda dates: pd.datetime.strptime(dates,'%Y-%m-%d') 
df = pd.read_csv('turbidez.csv',parse_dates=['date'],index_col='date',date_parser=dateparse)
data = df['x']
data.head()

date          
2002-07-31    8.466111
2002-08-31    6.234259
2002-09-30    8.160763
2002-10-31    4.927685
2002-11-30    8.125012

经过一点搜索,我访问了this solution,但是无法正确地将其应用于我的数据。

在此先感谢您的帮助。

解决方法

使用pandas.to_datetimepandas.Series.dt.month

# Sample data
        date         x
0 2002-07-31  8.466111
1 2003-07-31  6.234259
2 2002-09-30  8.160763
3 2003-09-30  4.927685
4 2002-11-30  8.125012

df["date"] = pd.to_datetime(df["date"] )
new_df = df.groupby(df["date"].dt.month).sum()
print(new_df)

输出:

              x
date           
7     14.700370
9     13.088448
11     8.125012