2013-06-26 82 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 

輸出顯示每個一個在數據幀的每一列的計數。相反,我需要在上述所有條件都滿足的情況下得到一個統計數字?這個怎麼做?如果您需要關於我的數據框的更多解釋,請告訴我。

回答

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

哪一個更快? (df ['A']> 0)])) 或 '''sum(df ['A']> 0)'''? –