在进行 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.nan
和 np.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
我有以下两个数据框:
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.nan
和 np.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