用前几天的数据填充数据框中的空缺

时间:2018-06-25 13:25:01

标签: python pandas

我重新考虑了这个问题,并重新提出了我的问题。

我有一个数据框(df),其中包含许多因素的时间序列数据。每个因子的时间序列可以在不同的日期开始,这很好。在某些特定日期,缺少因子B和因子C的数据(空白)(在此示例中为07/01/2017)。对于具有这些空白天的FactorB和FactorC,我想用前一天的该因子的值填充漏洞。例如:

            FactorA FactorB FactorC
01/01/2017     5.50    
02/01/2017     5.31    
03/01/2017     5.62     
04/01/2017     5.84    5.62    5.74
05/01/2017     5.95    5.85    5.86
06/01/2017     5.94    5.93    5.91
07/01/2017     5.62     
08/01/2017     6.01    6.20    6.21
09/01/2017     6.12    6.20    3.23

dfFactorB上的FactorC07/01/2017缺少数据。我希望生成的df如下所示:

           FactorA  FactorB FactorC
01/01/2017    5.50     
02/01/2017    5.31     
03/01/2017    5.62     
04/01/2017    5.84     5.62    5.74
05/01/2017    5.95     5.85    5.86
06/01/2017    5.94     5.93    5.91
07/01/2017    5.62     5.93    5.91
08/01/2017    6.01     6.20    6.21
09/01/2017    6.12     6.20    3.23

我想知道我是否需要在应用之前专门在NaN的日期上将FactorB和FactorC的空白更改为NaN(在此示例中为07/01/2017)

df= df.replace('',np.NaN).ffill() 

因此,该问题的中间输出如下:

            FactorA FactorB FactorC
01/01/2017     5.50    
02/01/2017     5.31    
03/01/2017     5.62     
04/01/2017     5.84    5.62    5.74
05/01/2017     5.95    5.85    5.86
06/01/2017     5.94    5.93    5.91
07/01/2017     5.62     NaN     NaN
08/01/2017     6.01    6.20    6.21
09/01/2017     6.12    6.20    3.23

但是我将如何对仅合法丢失数据的几天应用NaN(不更改FactorB和FactorC时间序列开始的日期。还有一种方法可以在不专门调用日期的情况下执行此操作,因为可能会出现漏洞在任何日期。

我已经尝试了以下方法,但是当我检查数据时,空格仍然存在,我觉得我走不通了:

col = ['FactorB', 'FactorC']
df[col] = df[col].ffill() 

我也尝试过:

df.fillna(method='ffill')

df= df.replace('',np.NaN).ffill() 

如果有人可以提供一些帮助,将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

如果缺少某些值而不是NaN

df = df.replace('',np.NaN).ffill()