我试图在 NaT 面前获取包含 datetime64 数据的几个 Pandas Series 对象的最小值和最大值。如果 dtype 是 float64, np.minimum 和 np.maximum 会按照我想要的方式工作。也就是说,一旦比较中的任何元素为 NaN,NaN 将是该比较的结果。例如:
>>> s1
0 0.0
1 1.8
2 3.6
3 5.4
dtype: float64
>>> s2
0 10.0
1 17.0
2 NaN
3 14.0
dtype: float64
>>> np.maximum(s1, s2)
0 10.0
1 17.0
2 NaN
3 14.0
dtype: float64
>>> np.minimum(s1, s2)
0 0.0
1 1.8
2 NaN
3 5.4
dtype: float64
如果 s1 和 s2 是 datetime64 对象,则这不起作用:
>>> s1
0 2199-12-31
1 2199-12-31
2 2199-12-31
3 2199-12-31
dtype: datetime64[ns]
>>> s2
0 NaT
1 2018-10-30
2 NaT
3 NaT
dtype: datetime64[ns]
>>> np.maximum(s1, s2)
0 2199-12-31
1 2199-12-31
2 2199-12-31
3 2199-12-31
dtype: datetime64[ns]
>>> np.minimum(s1, s2)
0 2199-12-31
1 2018-10-30
2 2199-12-31
3 2199-12-31
dtype: datetime64[ns]
无论是计算最小值还是最大值,我都希望索引 0、2 和 3 显示为 NaT。(我意识到 numpy 的函数可能不是最佳选择,但我没有成功找到合适的 Pandas 类似物。)
在做了一些阅读之后,我开始意识到 NaT 只是近似 NaN,后者具有适当的浮点表示。进一步阅读表明没有简单的方法可以让 NaT“污染”这些比较。让 NaT 在最小/最大比较中传播的正确方法是什么,就像 NaN 在浮点上下文中所做的那样?也许有与 numpy.{maximum,minimum} 等价的 Pandas 是 NaT 感知的?
慕姐4208626
相关分类