Pandas按年汇总值,但保留原始的TimeSeries索引

时间:2013-08-28 10:55:19

标签: python pandas

我有一个月度数据的时间序列。我想按年汇总值,但保留原始的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月的价值填充。

1 个答案:

答案 0 :(得分:1)

改为使用reindex:

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')