我想根据多年来数据的时间序列计算一年中的平均值。因此,我在处理闰年时遇到了一个问题,如下例所示。
ind=pd.DatetimeIndex(start='2016-01-01', end='2016-12-31', freq='d')
dat=np.arange(1,367,1)
ser=pd.Series(dat, index=ind)
由于闰年,最终系列有366个参赛作品。
我通过以下方式手动删除了2月29日的条目:
ser=ser[~((ser.index.month==2)&(ser.index.day==29))]
正如预期的那样,该系列之后只有365个条目。
当我通过以下方式计算一年中的平均值时:
doy_mean=ser.groupby(ser.index.dayofyear).mean()
我再次收到366个条目的系列。任何想法如何处理这个?
谢谢!
答案 0 :(得分:0)
我不是在这里遵循你的完整逻辑,但你可以用它作为起点。
ind=pd.DatetimeIndex(start='2016-01-01', end='2016-12-31', freq='d')
dat=np.arange(1,367,1)
ser=pd.Series(dat, index=ind)
ser=ser[~((ser.index.month==2)&(ser.index.day==29))]
ser = ser.ne(0).cumsum()
ser.groupby(ser.values).mean()
输出:
1 1
2 2
3 3
4 4
5 5
...
361 361
362 362
363 363
364 364
365 365
dtype: int32