如果date_time
不是您的索引,date_time
可以使用以下命令创建 -indexed DataFrame:
dfts = df.set_index('date_time')
从那里你可以使用按间隔分组
dfts.groupby(lambda x : x.month).mean()
查看每个月的平均值。同样,你可以做
dfts.groupby(lambda x : x.year).std()
多年来的标准偏差。
如果我理解您想要完成的示例任务,您可以使用 将数据拆分为年份xs
,将它们分组并连接结果并将其存储在一个新的DataFrame
.
years = range(2012, 2015)
yearly_month_stats = [dfts.xs(str(year)).groupby(lambda x : x.month).mean() for year in years]
df2 = pd.concat(yearly_month_stats, axis=1, keys = years)
你从中得到类似的东西
2012 2013 2014
value value value
1 NaN 5.324165 15.747767
2 NaN -23.193429 9.193217
3 NaN -14.144287 23.896030
4 NaN -21.877975 16.310195
5 NaN -3.079910 -6.093905
6 NaN -2.106847 -23.253183
7 NaN 10.644636 6.542562
8 NaN -9.763087 14.335956
9 NaN -3.529646 2.607973
10 NaN -18.633832 0.083575
11 NaN 10.297902 14.059286
12 33.95442 13.692435 22.293245