用先前的变量替换数据框中的 NaT

Replace NaT in a dataframe with a previous variable

如何用之前创建(设置)的 date/variable 替换数据框中的 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 显示为对象时。

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