如何在 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
是字符串。因此,要将它们替换为 NaN
s,请使用:
df = df.mask(df == 'NaT', np.nan)
或者:
df = df.replace('NaT', np.nan)
我有如下数据框
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
是字符串。因此,要将它们替换为 NaN
s,请使用:
df = df.mask(df == 'NaT', np.nan)
或者:
df = df.replace('NaT', np.nan)