gabboshow
gabboshow

Reputation: 5569

find indeces of rows containing NaN

in a pandas dataframe

matrix

I would like to find the rows (indices) contaning NaN.

for finding NaN in columns I would do

  idx_nan = matrix.columns[np.isnan(matrix).any(axis=1)]

but it doesn't work with matrix.rows

What is the equivalent for finding items in rows?

Upvotes: 2

Views: 246

Answers (1)

jezrael
jezrael

Reputation: 862741

I think you need DataFrame.isnull with any and boolean indexing:

print (df[df.isnull().any(1)].index)

Sample:

df = pd.DataFrame({'A':[1,2,3],
                   'B':[4,5,6],
                   'C':[np.nan,8,9],
                   'D':[1,3,5],
                   'E':[5,3,6],
                   'F':[7,4,3]})

print (df)
   A  B    C  D  E  F
0  1  4  NaN  1  5  7
1  2  5  8.0  3  3  4
2  3  6  9.0  5  6  3

print (df[df.isnull().any(1)].index)
Int64Index([0], dtype='int64')

Another solutions:

idx_nan = df[np.isnan(df).any(axis=1)].index
print (idx_nan)   
Int64Index([0], dtype='int64')

idx_nan = df.index[np.isnan(df).any(axis=1)]
print (idx_nan) 

Upvotes: 5

Related Questions