3

我正在使用 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 观察月。

我也很好奇是否有内置方法可以更好地控制高频周期如何用低频值填充。以月到日为例,默认只填写每个月的最后一天;如果我使用 aPeriodIndex来索引我的系列,我也可以s.resample('D', convention='start')只填写第一个观察值。但是,我还希望选择用每月值填充每月的每一天,并用每日平均值填充每一天(月值除以该月的天数)。

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

4

1 回答 1

5

这个怎么样?

s.reindex(DatetimeIndex(start=s.index[0].replace(day=1), end=s.index[-1], freq='D'))
于 2012-10-11T13:45:40.050 回答