2013-06-26 3 views
16

Я хочу получить счет строк данных в зависимости от условного выбора. Я попробовал следующий код.получить число строк данных на основе условий

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

выход:

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

Выходной сигнал показывает счетчик для каждого в каждом столбце в dataframe. Вместо этого мне нужно получить один счет, где все вышеперечисленные условия удовлетворены? Как это сделать? Если вам нужно больше объяснений о моем фреймворке, пожалуйста, дайте мне знать.

ответ

30

Вы просите условие, когда все условия истинны, так Len кадра ответ, если я не понял, что вы просите

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

Да! Это то, чего я хотел :) Большое спасибо! –

+1

Какой из них быстрее? '' 'len (df [(df ['A']> 0)])' '' или '' 'sum (df ['A']> 0)' ''? –