obtener el recuento de filas del dataframe según las condiciones

Quiero obtener el recuento de filas de marcos de datos en función de la selección condicional. Probé el siguiente código.

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

salida:

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

La salida muestra el recuento de cada columna en el dataframe. En su lugar, necesito obtener un solo conteo donde se cumplan todas las condiciones anteriores ¿Como hacer esto? Si necesita más explicación sobre mi dataframe, por favor hágamelo saber.

Usted está preguntando por la condición en la que todas las condiciones son verdaderas, por lo que len del marco es la respuesta, a menos que mal entienda lo que está preguntando.

 In [17]: df = DataFrame(randn(20,4),columns=list('ABCD')) In [18]: df[(df['A']>0) & (df['B']>0) & (df['C']>0)] Out[18]: ABCD 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 

Para boost el rendimiento, no debe evaluar el dataframe utilizando su predicado. Puede usar el resultado de su predicado directamente como se ilustra a continuación:

 In [1]: import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(20,4),columns=list('ABCD')) In [2]: df.head() Out[2]: ABCD 0 -2.019868 1.227246 -0.489257 0.149053 1 0.223285 -0.087784 -0.053048 -0.108584 2 -0.140556 -0.299735 -1.765956 0.517803 3 -0.589489 0.400487 0.107856 0.194890 4 1.309088 -0.596996 -0.623519 0.020400 In [3]: %time sum((df['A']>0) & (df['B']>0)) CPU times: user 1.11 ms, sys: 53 µs, total: 1.16 ms Wall time: 1.12 ms Out[3]: 4 In [4]: %time len(df[(df['A']>0) & (df['B']>0)]) CPU times: user 1.38 ms, sys: 78 µs, total: 1.46 ms Wall time: 1.42 ms Out[4]: 4 

Tenga en cuenta que esta técnica solo funciona para contar el número de filas que cumplen con su predicado.