在使用pandas进行上采样时填充更高频率的窗口

时间:2012-10-11 13:37:12

标签: python pandas

我正在使用pandas将低频数据转换为更高的频率(例如每月到每天)。进行此转换时,我希望得到的更高频率索引跨越整个低频窗口。例如,假设我有一个月度系列,如下:

import numpy as np
from pandas import *
data = np.random.randn(2)
s = Series(data, index=date_range('2012-01-01', periods=len(data), freq='M'))

s
2012-01-31    0
2012-02-29    1

现在,我将其转换为每日频率:

s.resample('D')
2012-01-31     0
2012-02-01   NaN
2012-02-02   NaN
2012-02-03   NaN
...
2012-02-27   NaN
2012-02-28   NaN
2012-02-29     1

注意结果输出如何从2012-01-31到2012-02-29。但我真正想要的是从2011-01-01到2012-02-29的日子,所以每日指数“填补”整个1月,即使2012-01-31仍然是唯一的非NaN观察月。

我也很好奇是否有内置方法可以更好地控制较高频率周期如何用较低频率值填充。在每月每日示例中,默认值是仅填写每个月的最后一天;如果我使用PeriodIndex索引我的系列,我也可以s.resample('D', convention='start')只填充第一个观察结果。但是,我也希望选项以每月的价值填充当月的每一天,并且每天填写每日平均值(月值除以当月的天数)。

请注意,基本的回填和向前填充不足以用月值填充当月的每日观察值。例如,如果月度序列从1月到3月运行但2月值为NaN,则向前填充会将1月值带入2月,这是不希望的。

1 个答案:

答案 0 :(得分:5)

这个怎么样?

s.reindex(DatetimeIndex(start=s.index[0].replace(day=1), end=s.index[-1], freq='D'))
相关问题