2015-04-30 8 views
30

Ho un DataFrame molto grande e mi chiedevo se ci fosse un modo breve (uno o due di linea) per ottenere il conteggio delle voci non NaN in un DataFrame. Non voglio fare questa colonna alla volta perché ho quasi 1000 colonne.Contare il numero di voci non NaN in ogni colonna di Dataframe

df1 = pd.DataFrame([(1,2,None),(None,4,None),(5,None,7),(5,None,None)], 
        columns=['a','b','d'], index = ['A', 'B','C','D']) 

    a b d 
A 1 2 NaN 
B NaN 4 NaN 
C 5 NaN 7 
D 5 NaN NaN 

uscita:

a: 3 
b: 2 
d: 1 
+0

df1 [df1.notnull()]. ​​Count() questo sembra aver funzionato – cryp

+2

L'indicizzazione extra con 'df1.notnull()' non è necessaria poiché 'count' ignora comunque valori nulli. –

+0

A differenza di 'series.value_counts (..., dropna = False)', non c'è opzione su 'df.count()' per ottenere direttamente il conteggio di NA. – smci

risposta

44

Il metodo count() restituisce il numero di non NaN valori in ciascuna colonna:

>>> df1.count() 
a 3 
b 2 
d 1 
dtype: int64 

Analogamente, count(axis=1) restituisce il numero di non NaN valori ogni riga.

Problemi correlati