nat = np.datetime64('NaT')
nat == nat
>> FutureWarning: In the future, 'NAT == x' and 'x == NAT' will always be False.
np.isnan(nat)
>> TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
如何检查 datetime64 是否为 NaT?我似乎无法从文档中挖掘出任何东西。我知道 Pandas 可以做到,但我不想为这么基本的东西添加依赖项。
最佳答案
pandas可以使用 pandas.isnull
检查 NaT
:
>>> import numpy as np
>>> import pandas as pd
>>> pd.isnull(np.datetime64('NaT'))
True
如果你不想使用 pandas 也可以定义自己的函数(部分取自 pandas 源):
nat_as_integer = np.datetime64('NAT').view('i8')
def isnat(your_datetime):
dtype_string = str(your_datetime.dtype)
if 'datetime64' in dtype_string or 'timedelta64' in dtype_string:
return your_datetime.view('i8') == nat_as_integer
return False # it can't be a NaT if it's not a dateime
这可以正确识别 NaT 值:
>>> isnat(np.datetime64('NAT'))
True
>>> isnat(np.timedelta64('NAT'))
True
并意识到它是否不是日期时间或时间增量:
>>> isnat(np.timedelta64('NAT').view('i8'))
False
将来在 numpy 代码中可能会有一个 isnat
函数,至少他们有一个(当前打开的)关于它的拉取请求:Link to the PR (NumPy github)
关于python - Numpy:检查值是否为 NaT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38509538/