1

我有一个时间序列的月度数据。我想按年份汇总这些值,然后保留原始的 TimeSeries 索引。这可能是最好的例子说明:

# April 2012 to Nov 2053
dates = pd.date_range('2012-04-01',periods=500,freq='MS')

# Random time series over date range
a = pd.Series(np.arange(500), index=dates)

# Almost works but I'm missing the last 7 months:
# May 2053 to Nov 2053
b = a.resample('AS-APR', how='sum').resample('MS', fill_method='pad')

知道如何才能b包含完整的 500 个时间段,包括最近 7 个月的缺失吗?它们需要从 2053 年 4 月的值填充。

4

1 回答 1

1

改用重新索引:

b = a.resample('AS-APR', how='sum').reindex(a.index, method='pad')

这样,您将获得与原始 Series 对象相同的索引,并根据需要进行填充。

问题resample在于,当您第一次重新采样时a,最后一个条目变为 2053 年 4 月。因此,当您进行第二次重新采样时,结束日期将是 2053-04-01。所以它进行了正确的重采样,但第一个将结束日期从 11 月移到了 4 月。

如果您想要执行与原始数组不同的频率,您可以使用此方法再次执行此操作:

b = a.resample('AS-APR', how='sum').reindex(a.resample('D').index, method='pad')
于 2013-08-28T11:13:22.720 回答