将数据帧中的NaT替换为先前的变量

时间:2017-12-26 23:14:01

标签: pandas dataframe replace notnull

我怎样才能用数据框中的NaT替换之前创建(设置)的日期/变量?

我得到了以下数据框:

     Date            Name         CF
0        NaT         Peter       -10
0 2017-12-14         Peter       -20
1        NaT         Tomas       -5.5
1 2017-12-15         Peter       -25
2        NaT         Tomas       -3
2 2017-12-14         Tomas       -5
3        NaT         Walker      -4.6
3 2017-12-15         Tomas        88
4 2017-12-15         Tomas       -30
5 2017-12-15         Walker       15

我想用我在项目开头设置的变量替换NaT:这样的End变量:

format_date = "%d-%m-%Y"
end = datetime.date(2017, 12, 15)

我尝试了两种方法:首先,我使用了Pandas中的np.where,但它无法识别NaT。其次,我试过这个

test = table_final2.Date.astype(object).where(table_final2.Date.notnull(), end)

但这导致列Date

的混合格式
         Date              Name      CF
0           2017-12-15     Peter    -10
0  2017-12-14 00:00:00     Peter    -20
1           2017-12-15     Tomas    -5.5
1  2017-12-15 00:00:00     Peter    -25
2           2017-12-15     Tomas    -3
2  2017-12-14 00:00:00     Tomas    -5
3           2017-12-15     Walker   -4.6
3  2017-12-15 00:00:00     Tomas     88
4  2017-12-15 00:00:00     Tomas    -30
5  2017-12-15 00:00:00     Walker    15

那么,我该如何准确地替换NaT? 提前谢谢!

PD:当test.dtypes将Date显示为对象时。

1 个答案:

答案 0 :(得分:2)

IIUC您可以使用Series.fillna()方法:

In [138]: end = pd.to_datetime('2017-12-15')

In [139]: df['Date'] = df['Date'].fillna(end)

In [140]: df
Out[140]:
        Date    Name    CF
0 2017-12-15   Peter -10.0
0 2017-12-14   Peter -20.0
1 2017-12-15   Tomas  -5.5
1 2017-12-15   Peter -25.0
2 2017-12-15   Tomas  -3.0
2 2017-12-14   Tomas  -5.0
3 2017-12-15  Walker  -4.6
3 2017-12-15   Tomas  88.0
4 2017-12-15   Tomas -30.0
5 2017-12-15  Walker  15.0