【发布时间】:2012-10-02 10:23:18
【问题描述】:
在 Pandas 中获取低频时间序列(例如每月或每季度的数据)并将其上采样到每周频率时,我遇到了问题。例如,
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
【问题讨论】:
-
我意识到这样做的一种方法可能是将上采样到每日数据,然后再下采样到每周数据。不过,仍然有兴趣知道是否有更直接的方法。