【发布时间】:2017-10-17 22:32:29
【问题描述】:
我想根据具有多年数据的时间序列计算一年中某天的平均值。因此,我在处理闰年时遇到了一个问题,如下例所示。
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 个条目的系列。任何想法如何处理这个?
谢谢!
【问题讨论】:
-
您所做的只是删除 2 月 29 日,一年中的最后一天的 dayofyear 值仍为 366。因此,您可以删除一年中的最后一天或按月和日的组值,如果您只想删除 2 月 29 日
-
检查
len(doy_mean)应该是365。 -
谢谢!我想从 30 年的时间序列中计算温度平均值。如果我 goupby dayofyear 第 365 天的值是根据非闰年的 12 月 31 日和闰年的 12 月 30 日的值计算的。按月和日分组时,我可以避免这个错误。