数据框中的NaN:当第一次观察时间序列是NaN时,前面填充第一个可用,否则结转最后/先前的观察

时间:2018-04-05 02:47:40

标签: pandas conditional missing-data statsmodels

我正在从statsmodels执行ADF测试。价值系列可能缺少对话。事实上,如果NaNs的比例大于c,我就会放弃分析。但是,如果系列通过我得到问题,adfuller无法处理丢失的数据。由于这是使用最小帧大小的训练数据,我想这样做:

1)如果x(t = 0)= NaN,则找到下一个非NaN值(t> 0) 2)否则,如果x(t)= NaN,则x(t)= x(t-1)

所以我在这里妥协我的第一个值,但确保输入数据始终具有相同的维度。或者,如果缺少第一个值,我可以填写0,并使用dropna中的限制选项。

从文档中我不完全清楚不同的选项: 方法:{'backfill','bfill','pad','ffill',None},默认无

  

用于填充重新索引的填充孔的方法系列填充/填充:将最后一次有效观察传播到下一个有效回填/   bfill:使用NEXT有效观察来填补空白

pad / ffill:这是否意味着我继承了之前的价值? backfill / bfill:这是否意味着我的价值取自未来的有效值?

df.dropna(method = 'bfill', limit 1, inplace = True)
df.dropna(method = 'ffill', inplace = True)

这会有限制吗?该文档使用'limit = 1'但预先确定了要填充的值。

1 个答案:

答案 0 :(得分:1)

  

1)如果x(t = 0)= NaN,则找到下一个非NaN值(t> 0)2)否则如果x(t)= NaN,则x(t)= x(t-1) )

要预先填写所有观察,除了(可能)应该回填的第一个观察,您可以将两个调用链接到ansible: user,第一个调用method='ffill',第二个调用{{1 }}:

method='fill'