在进行 pandas 比较时如何从 np.nan>np.nan return np.nan?

When making a pandas comparison how to, return np.nan from np.nan>np.nan?

我有以下两个数据框:

a = pd.DataFrame([[1,2, 3],[4,3,6], [np.nan, 2, np.nan]])
     0  1    2
0  1.0  2  3.0
1  4.0  3  6.0
2  NaN  2  NaN

b = pd.DataFrame([[0,1,3],[5,3,5 ],[np.nan, np.nan, np.nan]])
     0    1    2
0  0.0  1.0  3.0
1  5.0  3.0  5.0
2  NaN  NaN  NaN

a>b 的比较结果为:

       0      1      2
0   True   True  False
1  False  False   True
2  False  False  False

但是我希望输出如下所示:

     0      1      2
0   True   True  False
1  False  False   True
2   nan    nan     nan

2>np.nannp.nan>np.nan 的比较结果应该都是 np.nan。 (或任何其他不同于 True 和 False 的随机值)

任何事情都会有所帮助!

我们需要添加一个mask

yourdf=a.gt(b).mask(a.isna()|b.isna(),'nan')
Out[153]: 
       0      1      2
0   True   True  False
1  False  False   True
2    nan    nan    nan