How to find which columns contain any NaN value in Pandas dataframe (python)

How to find which columns contain any NaN value in Pandas dataframe (python)

Asked on December 22, 2018 in Pandas.
Add Comment


  • 1 Answer(s)

    The functions  ‘DataFrame.isna()‘ and ‘DataFrame.notna()‘ can be used for newer version of Pandas.

    In [71]: df
    Out[71]:
       a    b    c
    0  NaN  7.0  0
    1  0.0  NaN  4
    2  2.0  NaN  4
    3  1.0  7.0  0
    4  1.0  3.0  9
    5  7.0  4.0  9
    6  2.0  6.0  9
    7  9.0  6.0  4
    8  3.0  0.0  9
    9  9.0  0.0  1
     
    In [72]: df.isna().any()
    Out[72]:
    a  True
    b  True
    c  False
    dtype: bool
    

    To display as column lists:

    In [74]: df.columns[df.isna().any()].tolist()
    Out[74]: ['a', 'b']
    

    For selecting the columns with atleast one NaN values:

    In [73]: df.loc[:, df.isna().any()]
    Out[73]:
       a    b
    0  NaN  7.0
    1  0.0  NaN
    2  2.0  NaN
    3  1.0  7.0
    4  1.0  3.0
    5  7.0  4.0
    6  2.0  6.0
    7  9.0  6.0
    8  3.0  0.0
    9  9.0  0.0
    

    The isnull() function can also be used:

    In [97]: df
    Out[97]:
       a    b    c
    0  NaN  7.0  0
    1  0.0  NaN  4
    2  2.0  NaN  4
    3  1.0  7.0  0
    4  1.0  3.0  9
    5  7.0  4.0  9
    6  2.0  6.0  9
    7  9.0  6.0  4
    8  3.0  0.0  9
    9  9.0  0.0  1
     
    In [98]: pd.isnull(df).sum() > 0
    Out[98]:
    a True
    b True
    c False
    dtype: bool
    

    For clarity:

    In [5]: df.isnull().any()
    Out[5]:
    a True
    b True
    c False
    dtype: bool
     
    In [7]: df.columns[df.isnull().any()].tolist()
    Out[7]: ['a', 'b']
    

    The below code is used to select a subset, containing atleast one NaN values in one column:

    In [31]: df.loc[:, df.isnull().any()]
    Out[31]:
       a    b
    0  NaN  7.0
    1  0.0  NaN
    2  2.0  NaN
    3  1.0  7.0
    4  1.0  3.0
    5  7.0  4.0
    6  2.0  6.0
    7  9.0  6.0
    8  3.0  0.0
    9  9.0  0.0
    
    Answered on December 22, 2018.
    Add Comment


  • Your Answer

    By posting your answer, you agree to the privacy policy and terms of service.