You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中的NaT是什么?datetime列存在NaT值的场景疑问解析

Pandas中的NaT是什么?datetime列存在NaT值的场景疑问解析

嗨,我来给你把Pandas里的NaT讲得明明白白!

其实NaT就是时间相关数据类型专属的缺失值标记,类比一下数值类型里的NaN——你想啊,数值缺了用NaN表示,那日期、时间、时间间隔这类时间型数据缺了,总不能也用NaN吧?所以Pandas就专门搞了NaT(Not a Time的缩写)来干这个活儿。

就拿你给出的这个DataFrame例子来说:

project  status    completed
0       windows  done    2025-08-20
1       doors    done    2025-08-21
2       hvac     delayed NaT

hvac任务状态是delayed(延迟),它还没完成呢,自然没有实际的完成时间,这时候Pandas就会用NaT来标记这个缺失的时间值;另外如果数据采集时漏了某个任务的时间,或者这个时间本身就不存在,也会出现NaT。

之前老版本的Pandas(3.0之前)确实坑人,查pandas.NaT的文档,居然只显示“alias of NaT”,等于啥都没说!不过好在Pandas 3.0之后已经把这个文档问题修复了,现在去看应该能看到清晰的解释了。

很多人第一次看到NaT会疑惑:“所有时间值都应该是datetime对象啊,NaT是什么鬼?”其实完全不用慌,它就是Pandas为时间类型数据量身定做的缺失值,和datetime对象是兼容的——你用df.dtypes去看的话,这个列依然是datetime64[ns]类型,不会因为有NaT就变类型,而且Pandas的很多时间相关操作也能正确识别NaT,比如筛选缺失时间行可以用df[df['completed'].isna()],填充缺失值可以用df['completed'].fillna(pd.Timestamp('2025-12-31'))这类操作。

总结一下:NaT就是时间型数据的“NaN”,专门用来标记日期、时间类数据的缺失情况,完全是Pandas里正常的缺失值表示方式~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 08:07:59