2013-06-26 31 views
16

Tôi muốn nhận số lượng các dòng dữ liệu dựa trên lựa chọn có điều kiện. Tôi đã thử đoạn mã sau.nhận số lượng dòng dữ liệu dựa trên các điều kiện

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

đầu ra:

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

Kết quả cho thấy số lượng cho mỗi một mỗi cột trong dataframe. Thay vào đó, tôi cần phải có một số lượng duy nhất mà tất cả các điều kiện trên đều hài lòng? làm như thế nào? Nếu bạn cần giải thích thêm về khung dữ liệu của tôi, vui lòng cho tôi biết.

Trả lời

30

Bạn đang yêu cầu điều kiện nơi mà tất cả các điều kiện là đúng sự thật, nên len của khung là câu trả lời, trừ khi tôi hiểu sai những gì bạn đang yêu cầu

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

Có! Đó là những gì tôi muốn :) Cảm ơn rất nhiều! –

+1

Cái nào nhanh hơn? '' 'len (df [(df ['A']> 0)])' '' hoặc '' 'tổng (df ['A']> 0)' ''? –

Các vấn đề liên quan