问题描述
我有一个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_datetime
和pandas.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