我重新考虑了这个问题,并重新提出了我的问题。
我有一个数据框(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
在df
中FactorB
上的FactorC
和07/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()
如果有人可以提供一些帮助,将不胜感激。
谢谢
答案 0 :(得分:0)
如果缺少某些值而不是NaN
:
df = df.replace('',np.NaN).ffill()