2013-06-26 10 views
16

Desidero ottenere il conteggio delle righe del dataframe in base alla selezione condizionale. Ho provato il seguente codice.ottiene il conteggio delle righe del dataframe in base alle condizioni

print df[(df.IP == head.idxmax()) & (df.Method == 'HEAD') & (df.Referrer == '"-"')].count() 

uscita:

IP   57 
Time  57 
Method  57 
Resource 57 
Status  57 
Bytes  57 
Referrer 57 
Agent  57 
dtype: int64 

L'uscita mostra il conteggio per ciascuno un ogni colonna della dataframe. Invece ho bisogno di ottenere un conteggio unico in cui sono soddisfatte tutte le condizioni di cui sopra? Come fare questo? Se hai bisogno di ulteriori spiegazioni sul mio dataframe per favore fammi sapere.

risposta

30

Stai chiedendo per la condizione in cui tutte le condizioni sono vere, in modo len del telaio è la risposta, a meno che non mi fraintendere quello che stai chiedendo

In [17]: df = DataFrame(randn(20,4),columns=list('ABCD')) 

In [18]: df[(df['A']>0) & (df['B']>0) & (df['C']>0)] 
Out[18]: 
      A   B   C   D 
12 0.491683 0.137766 0.859753 -1.041487 
13 0.376200 0.575667 1.534179 1.247358 
14 0.428739 1.539973 1.057848 -1.254489 

In [19]: df[(df['A']>0) & (df['B']>0) & (df['C']>0)].count() 
Out[19]: 
A 3 
B 3 
C 3 
D 3 
dtype: int64 

In [20]: len(df[(df['A']>0) & (df['B']>0) & (df['C']>0)]) 
Out[20]: 3 
+0

Sì! Questo è quello che volevo :) Grazie mille! –

+1

Quale è più veloce? '' 'len (df [(df ['A']> 0)])' '' o '' 'sum (df ['A']> 0)' ''? –

Problemi correlati