在大熊猫中获取低频时间序列(例如每月或每季度的数据)并将其上采样到每周频率时,我遇到了问题。例如,
data = np.arange(3, dtype=np.float64)
s = Series(data, index=date_range('2012-01-01', periods=len(data), freq='M'))
s.resample('W-SUN')
结果是一个到处都是 NaN 的系列。如果我这样做,基本上会发生同样的事情:
s.reindex(DatetimeIndex(start=s.index[0].replace(day=1), end=s.index[-1], freq='W-SUN'))
如果s
用 PeriodIndex 索引而不是我会得到一个错误:ValueError: Frequency M cannot be resampled to <1 Week: kwds={'weekday': 6}, weekday=6>
我可以理解为什么会发生这种情况,因为每周日期与每月日期不完全一致,而且几周可能与几个月重叠。但是,无论如何,我想实施一些简单的规则来处理这个问题。特别是,(1) 将在该月结束的最后一周设置为每月值,(2) 将在该月结束的第一周设置为每月值,或 (3) 将在该月结束的所有周设置为每月价值。实现这一目标的方法可能是什么?我可以想象也想将其扩展到双周数据。
编辑:我理想情况下希望案例(1)的输出的一个例子是:
2012-01-01 NaN
2012-01-08 NaN
2012-01-15 NaN
2012-01-22 NaN
2012-01-29 0
2012-02-05 NaN
2012-02-12 NaN
2012-02-19 NaN
2012-02-26 1
2012-03-04 NaN
2012-03-11 NaN
2012-03-18 NaN
2012-03-25 2