用Pandas进行上采样时填充高频窗口

2024-04-23 22:29:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用熊猫把低频数据转换成更高频率的数据(例如每月一次到每天一次)。当进行这种转换时,我希望得到的更高频率指数跨越整个低频窗口。例如,假设我有一个月度系列,如下所示:

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

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

^{pr2}$

注意结果输出是如何从2012-01-31到2012-02-29的。但我真正想要的是从2011年1月1日到2012年2月29日的几天,这样日线指数就“填满”了整个1月,即使2012年1月31日仍然是该月唯一的非楠观察值。在

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

请注意,基本回填和正向填充不足以用月值填充当月的每日观测值。例如,如果月序列从一月到三月,但是二月的值是NaN,那么向前填充将把一月的值带入二月,这是不需要的。在


Tags: 数据fromimportnumpypandasdatadateindex