如何筛选Pandas中date_closed非NaT行?NaT相关疑问
解答你的Pandas NaT相关问题
1. 如何筛选出date_closed列不为NaT的行?
有几种简单易用的方法:
- 方法一:使用
notna()方法
直接通过布尔索引精准筛选:filtered_df = df[df['date_closed'].notna()] - 方法二:使用
dropna()方法
指定删除date_closed列中带缺失值的行:filtered_df = df.dropna(subset=['date_closed'])
两种方法效果一致,选你顺手的用就行~
2. NaT是什么?它是否等同于Null?
- NaT的本质:NaT是
Not a Time的缩写,是Pandas(以及底层的NumPy)专门为datetime64[ns]、timedelta64[ns]这类时间相关数据类型设计的缺失值标记。类比一下:数值类型的缺失值是NaN,时间类型的缺失值就是NaT。 - 和Null的关系:从逻辑含义上来说,它和一般的Null(比如Python里的
None、数据库中的Null)是类似的,都代表“缺失或不存在的值”,但数据类型完全不同:None是Python对象类型的缺失值,没法直接放在datetime64类型的列中;- NaT是专为时间序列打造的,只能用于
datetime64或timedelta64类型的列,属于NaN家族的一员,只是对应的数据场景不同。
3. 为什么df['date_closed'].value_counts()里看不到NaT?
这是因为value_counts()的默认参数dropna=True,这个参数会自动忽略所有缺失值(包括NaT和NaN)。如果想要把NaT也纳入统计,只需要把dropna参数设为False:
df['date_closed'].value_counts(dropna=False)
这样就能看到包含NaT在内的所有唯一值的计数结果了。
内容的提问来源于stack exchange,提问作者HHH
相关产品推荐
相关产品推荐

