当我试图检查
DataFrame
值大于某个日期,而该数据帧也可能包含
pd.NaT
值的比较按预期进行:
import pandas as pd
pd.NaT > pd.to_datetime('2018-10-15')
# False
与
Series
也应按预期行事:
s = pd.Series([pd.NaT, pd.to_datetime('2018-10-16')])
s > pd.to_datetime('2018-10-15')
#0 False
#1 True
#dtype: bool
但是
数据文件
比较不正确:
s.to_frame() > pd.to_datetime('2018-10-15')
# 0
#0 True
#1 True
在我看来,问题是比较最初返回
NaN
哪一个是(在某个时刻?)被迫的
True
鉴于以下行为:
df = pd.DataFrame([[pd.NaT, pd.to_datetime('2018-10-16')],
[pd.to_datetime('2018-10-16'), pd.NaT]])
df >= pd.to_datetime('2018-10-15')
# 0 1
#0 True True
#1 True True
df.ge(pd.to_datetime('2018-10-15'))
# 0 1
#0 NaN 1.0
#1 1.0 NaN
所以我们真的不能用
> < >= <=
比较时的运算符
数据文件
需要依靠
.lt .gt .le .ge
其次是
.fillna(0)
?
df.ge(pd.to_datetime('2018-10-15')).fillna(0)
# 0 1
#0 0.0 1.0
#1 1.0 0.0