2015-05-05 25 views
19

Ho un set di dati con un numero elevato di righe. Alcuni dei valori sono NaN, come questo:Python/Panda: contando il numero di mancate/NaN in ogni riga

In [91]: df 
Out[91]: 
1 3  1  1  1 
1 3  1  1  1 
2 3  1  1  1 
1 1 NaN NaN NaN 
1 3  1  1  1 
1 1  1  1  1 

e voglio contare il numero di valori NaN in ogni stringa, sarebbe come questo:

In [91]: list = <somecode with df> 
In [92]: list 
    Out[91]: 
    [0, 
     0, 
     0, 
     3, 
     0, 
     0] 

Qual è la migliore e più veloce modo di farlo?

+0

Domanda simile per colonne: [Come posso ottenere un conteggio riepilogativo dei dati mancanti/NaN per colonna in "panda"?] (Http://stackoverflow.com/questions/22257527/how-do-i-get-a -SOMMARIO-of-the-conti-di-missing-data-in-panda) – smci

risposta

30

Si potrebbe prima trovare se elemento è NaN o meno da isnull() e poi prendere riga-saggio sum(axis=1)

In [195]: df.isnull().sum(axis=1) 
Out[195]: 
0 0 
1 0 
2 0 
3 3 
4 0 
5 0 
dtype: int64 

E, se si desidera che l'output come elenco, è possibile

In [196]: df.isnull().sum(axis=1).tolist() 
Out[196]: [0, 0, 0, 3, 0, 0] 

Oppure utilizzare count come

In [130]: df.shape[1] - df.count(axis=1) 
Out[130]: 
0 0 
1 0 
2 0 
3 3 
4 0 
5 0 
dtype: int64