如何在 Python 中将 NaT 转换为 NaN

How convert to NaT into NaN in Python

我有如下数据框

df.head(3)

ORD     Date1                   Date2           
717 2020-03-04T00:00:00Z    2020-03-04T00:00:00Z
722 NaT                     2020-03-15T00:00:00Z
719 2020-05-14T00:00:00Z    NaT

我想将所有 NaT 转换为 NaN

预期输出

ORD   Date1                   Date2           
717 2020-03-04T00:00:00Z    2020-03-04T00:00:00Z
722 NaN                     2020-03-15T00:00:00Z
719 2020-05-14T00:00:00Z    NaN

如何做到这一点

显然在 pandas 中没有必要,因为 NaT 正在像 NaN 那样处理。

这是可能的,但日期时间会转换为对象:

df = df.astype(object).mask(df.isna(), np.nan)
print (df)
   ORD                      Date1                      Date2
0  717  2020-03-04 00:00:00+00:00  2020-03-04 00:00:00+00:00
1  722                        NaN  2020-03-15 00:00:00+00:00
2  719  2020-05-14 00:00:00+00:00                        NaN

print (df.dtypes)
ORD      object
Date1    object
Date2    object
dtype: object

编辑:如果将日期时间转换为字符串也缺少值 NaT 是字符串。因此,要将它们替换为 NaNs,请使用:

df = df.mask(df == 'NaT', np.nan)

或者:

df = df.replace('NaT', np.nan)