如何在 Python 中创建“NaT”?

use*_*780 6 python datetime

float('NaN')我需要在 Python 中创建一个“NaT”(与时间类似)。这可以在 Python 中本地完成还是使用datetime库完成?如何?

我知道numpy并且pandas可以做到这一点(或类似的事情),但我觉得如果我需要为此导入一个库,它应该是datetime,而不是numpypandas

lan*_*ane 4

不幸的是,它看起来并不datetime支持这种表示法。NaT查看中如何实现的代码pandas,看起来他们创建了一个 type 的类datetime,并NaT通过重写操作插入所需的行为。这让我相信它在日期时间中不存在,否则他们会使用它。参见pandas _NaT 类

此外,此输出测试将 pandas 时间戳转换为日期时间也进一步证明了这一点。

import pandas as pd

pd.Timestamp('10/2020').to_pydatetime()
Out[2]: datetime.datetime(2020, 10, 1, 0, 0)

pd.Timestamp('NaT').to_pydatetime()
Out[3]: NaT

type(pd.Timestamp('NaT').to_pydatetime())
Out[4]: pandas._libs.tslibs.nattype.NaTType
Run Code Online (Sandbox Code Playgroud)

请注意,NaT不会产生datetime.datetime类型。

总之,您的选择是:

  1. 实现您自己的NaT类似于 pandas 的 datetime 类型的类(可能很困难)。

  2. 使用 numpy。在 中numpy可以NaT找到np.datetime64('nat'). 关于处理缺失时间的 Numpy 文档。这里

  3. 使用熊猫。在 pandas 中,可以通过 timestampNaT找到或解释。Pandas 文档中有一个完整的部分是关于处理丢失的数据以及如何使用日期时间处理它 pd.NaTpd.Timestamp('nat')