pandas.DatetimeIndex.dayofyear

时间:2017-10-17 14:22:58

标签: python pandas

我想根据多年来数据的时间序列计算一年中的平均值。因此,我在处理闰年时遇到了一个问题,如下例所示。

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个条目的系列。任何想法如何处理这个?

谢谢!

1 个答案:

答案 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