在Pandas中比较日期时如何处理NaN?

t98cgbkg  于 2023-01-01  发布在  其他
关注(0)|答案(1)|浏览(126)

我有一个Pandas系列的NaN的和日期
例如

# In the codebase this is being generated and used elsewhere, so changing the format would be a pain
x = pd.Series([
   np.nan, 
   np.nan, 
   pd.to_datetime('2020-01-01').date(),
   np.nan,
   pd.to_datetime('2020-02-01').date()
])

问题是最近的日期(如果有)是否大于“2021-06-01”
我做不到

x.max() > pd.to_datetime('2021-06-01')

因为x.max()返回TypeError: '>=' not supported between instances of 'float' and 'datetime.date'
这是因为Pandas不想将浮点数np.nan与日期进行比较。
但是,如果我使用x.fillna(pd.NaT).max(),它仍然不高兴,并抛出警告,指出np.NaT不应与日期进行比较。
什么是适当的方式来做到这一点在Pandas。

0lvr5msh

0lvr5msh1#

只需事先过滤掉NaN:

x[~x.isnull()].max()

它找到非空值的最大值,输出正确:

datetime.date(2020, 2, 1)

相关问题