【发布时间】:2021-06-15 13:02:41
【问题描述】:
所以基本上我想要 5 > np.nan 返回 np.nan 或 Nan 而不是 FALSE
在 pandas 系列中,代码如下:
import pandas as pd
import numpy as np
a = pd.DataFrame({"x":[1,2,3,4],"y":[1,np.nan,5,1]})
a["x"]>a["y"]
将返回:
0 False
1 False
2 False
3 True
dtype: bool
我目前保存 Nan 信息的方法是:
value_comparison = a["x"]>a["y"]
nan_comparison = a["x"].isna() | a["y"].isna()
value_comparison.where(~nan_comparison,np.nan)
返回的地方
0 0.0
1 NaN
2 0.0
3 1.0
dtype: float64
我也采用了类似的方法进行 numpy 比较
即使结果正确,我相信我的解决方案不优雅,有没有更好的(pandas 和 numpy)方法来做到这一点,遵循 zen of python ? (更好的可读性,更直接)
【问题讨论】: