我是Pandas时间序列和数据框架的新手,并且很难完成这个简单的任务。 我从2004年1月1日到2008年12月31日每天都有一个数据集“数据”(1维float32-Numpy数组)。日期存储为日期时间对象“日期”列表。 基本上,我想计算一个完整的“标准年” - 所有年份每天的平均值(1-365)。 我从这个类似的(?)问题(Getting the average of a certain hour on weekdays over several years in a pandas dataframe)开始,但无法达到预期的结果 - 365个“平均”天数的时间序列,例如1月1日的平均值,1月2日的平均值......
一个小例子脚本:
import numpy as np
import pandas as pd
import datetime
startdate = datetime.datetime(2004, 1, 1)
enddate = datetime.datetime(2008, 1, 1)
days = (enddate + datetime.timedelta(days=1) - startdate).days
data = np.random.random(days)
dates = [startdate + datetime.timedelta(days=x) for x in range(0, days)]
ts = pd.Series(data, dates)
test = ts.groupby(lambda x: (x.year, x.day)).mean()
答案 0 :(得分:9)
按月和日分组,而不是年和日:
test = ts.groupby([ts.index.month, ts.index.day]).mean()
产量
1 1 0.499264
2 0.449357
3 0.498883
...
12 17 0.408180
18 0.317682
19 0.467238
...
29 0.413721
30 0.399180
31 0.828423
Length: 366, dtype: float64