通过在Python中估算以前的日期来填补缺失的日期

时间:2018-11-07 19:43:53

标签: python python-3.x pandas datetime dataframe

我有一个滞后的时间序列,希望对未来一年的未来数据进行预测,如下所示:

Date           Energy         Pred Energy      Lag Error        
.
2017-09-01       9                 8.4
2017-10-01       10                9                
2017-11-01       11                10
2017-12-01       12                11.5
2018-01-01        1                1.3
NaT                                           (pred-true)
NaT
NaT
NaT
.
.

我要做的就是将日期输入到NaT条目中,以便从2018-01-01到2019-01-01继续(就像我们在Excel拖放中一样填充它们),因为有足够的NaT位置填补这一点。

我已经尝试了model['Date'].fillna()的各种方法,或者只是重复相同的先前日期,或者删除了我不想删除的内容。

有什么办法像以前的数据那样以1个月的增量填充这些NaT?

1 个答案:

答案 0 :(得分:0)

制作df并设置索引(有更好的设置索引的方法):

"""
Date,Energy,Pred Energy,Lag Error        
2017-09-01,9,8.4
2017-10-01,10,9                
2017-11-01,11,10
2017-12-01,12,11.5
2018-01-01,1,1.3
"""
import pandas as pd

df = pd.read_clipboard(sep=",", parse_dates=True)
df.set_index(pd.DatetimeIndex(df['Date']), inplace=True)
df.drop("Date", axis=1, inplace=True)
df

重新索引到新的date_range

idx = pd.date_range(start='2017-09-01', end='2019-01-01', freq='MS')
df = df.reindex(idx)

输出:

            Energy  Pred Energy  Lag Error        
2017-09-01     9.0          8.4                NaN
2017-10-01    10.0          9.0                NaN
2017-11-01    11.0         10.0                NaN
2017-12-01    12.0         11.5                NaN
2018-01-01     1.0          1.3                NaN
2018-02-01     NaN          NaN                NaN
2018-03-01     NaN          NaN                NaN
2018-04-01     NaN          NaN                NaN
2018-05-01     NaN          NaN                NaN
2018-06-01     NaN          NaN                NaN
2018-07-01     NaN          NaN                NaN
2018-08-01     NaN          NaN                NaN
2018-09-01     NaN          NaN                NaN
2018-10-01     NaN          NaN                NaN
2018-11-01     NaN          NaN                NaN
2018-12-01     NaN          NaN                NaN
2019-01-01     NaN          NaN                NaN

帮助来自: Pandas Set DatetimeIndex