¿Contando el número de ceros por fila por Pandas DataFrame?

Dado un dataframe, me gustaría calcular el número de ceros por cada fila. ¿Cómo puedo calcularlo con Pandas?

Esto es actualmente lo que he hecho, esto devuelve índices de ceros.

def is_blank(x): return x == 0 indexer = train_df.applymap(is_blank) 

Use una comparación booleana que producirá un df booleano. Luego, podemos convertir esto en int, True se convierte en 1, False se convierte en 0 y luego se llama a la count y se pasa param axis=1 para contar en la fila:

 In [56]: df = pd.DataFrame({'a':[1,0,0,1,3], 'b':[0,0,1,0,1], 'c':[0,0,0,0,0]}) df Out[56]: abc 0 1 0 0 1 0 0 0 2 0 1 0 3 1 0 0 4 3 1 0 In [64]: (df == 0).astype(int).sum(axis=1) Out[64]: 0 2 1 3 2 2 3 2 4 1 dtype: int64 

Romper lo de arriba hacia abajo:

 In [65]: (df == 0) Out[65]: abc 0 False True True 1 True True True 2 True False True 3 False True True 4 False False True In [66]: (df == 0).astype(int) Out[66]: abc 0 0 1 1 1 1 1 1 2 1 0 1 3 0 1 1 4 0 0 1 

EDITAR

como lo señaló david, el astype a int es necesario, ya que los tipos Boolean se actualizarán a int cuando se llama sum por lo que esto se simplifica a:

 (df == 0).sum(axis=1) 

Aquí hay otra solución que utiliza apply() y value_counts() .

 df = pd.DataFrame({'a':[1,0,0,1,3], 'b':[0,0,1,0,1], 'c':[0,0,0,0,0]}) df.apply( lambda s : s.value_counts().get(0,0), axis=1)