I have a dataframe with some "NaT" values in a datetime column. What does that mean?
project status completed
0 windows done 2025-08-20
1 doors done 2025-08-21
2 hvac delayed NaT
I checked the docs page pandas.NaT, but it just says "alias of NaT", which doesn't seem to make sense.
I found plenty of SO questions, but I didn't see one that actually explains what NaT is. E.g. How do I check if a specific item in pandas series is NaT
This is meant to be a canonical question with a self-answer. I'm not genuinely asking for myself, just want to put this out there since the docs page is lacking, and someone asked this question in earnest here: "What are NaT? All of the time values should be datetime objects."
NaT means "Not a Time". It's the equivalent of NaN "Not a Number". You'll see it in datetime and timedelta columns for missing values.
The docs page is supposed to have a fuller description, but there seems to be a bug with Pandas 2.2+. For now, see the Missing values page:
NaT is the missing value for timedelta and datetime data (see below):
NaT
: (N)ot-(A)-(T)ime, the time equivalent of NaN.
Or the user guide:
Working with missing data
Values considered “missing”
pandas uses different sentinel values to represent a missing (also referred to as NA) depending on the data type. [...]
NaT
for NumPynp.datetime64
,np.timedelta64
, andPeriodDtype
.
Or the help text:
In [5]: ?pd.NaT
Type: NaTType
String form: NaT
File: .../pandas/_libs/tslibs/nattype.cpython-311-x86_64-linux-gnu.so
Docstring:
(N)ot-(A)-(T)ime, the time equivalent of NaN.
Examples
--------
>>> pd.DataFrame([pd.Timestamp("2023"), np.nan], columns=["col_1"])
col_1
0 2023-01-01
1 NaT