如何在不比较python中的空值的情况下比较2个数据帧?

时间:2018-04-08 04:10:44

标签: python pandas

我有2个数据帧:

df1:
   a  b   c
0  1  2   6
1  2  3   7
2  3  4   8
3  4  5   9
4  5  6  10

df2:
     a    b     c
0  NaN  NaN   NaN
1  1.0  NaN   NaN
2  2.0  2.0   NaN
3  4.0  3.0   NaN
4  6.0  6.0  11.0

当我尝试做df1> df2,输出为:

In [150]:df1 > df2
Out[150]: 
       a      b      c
0  False  False  False
1   True  False  False
2   True   True  False
3  False   True  False
4  False  False  False

但我的期望是这样的:

       a      b      c
0    NaN    NaN    NaN
1   True    NaN    NaN
2   True   True    NaN
3  False   True    NaN
4  False  False  False

那么,我该如何比较2 df并将null保持为null?

1 个答案:

答案 0 :(得分:1)

试试吧:

*java.lang.IndexOutOfBoundsException*ArrayList.java:653*TestConverter.java:142*

输出:

df1.gt(df2).astype(str).mask(df2.isnull())

你可以试试,但是pandas改变任何系列的dtype的方式,使用null来浮动dtype你会得到以下结果:

       a      b      c
0    NaN    NaN    NaN
1   True    NaN    NaN
2   True   True    NaN
3  False   True    NaN
4  False  False  False

输出:

df1.gt(df2).mask(df2.isnull())