Подсчет количества нулей в строке на Pandas DataFrame?

Учитывая DataFrame, я хотел бы вычислить число нулей в каждой строке. Как я могу вычислить его с помощью Pandas?

В настоящее время я сделал это, это возвращает индексы нулей

def is_blank(x):
    return x == 0 

indexer = train_df.applymap(is_blank)

Ответ 1

Используйте логическое сравнение, которое будет генерировать логический df, тогда мы можем применить это к int, True станет 1, False станет 0, а затем вызовите count и передайте param axis=1 для подсчета по ряду:

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]:
   a  b  c
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

Нарушение вышеперечисленного:

In [65]:

(df == 0)
Out[65]:
       a      b     c
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]:
   a  b  c
0  0  1  1
1  1  1  1
2  1  0  1
3  0  1  1
4  0  0  1

ИЗМЕНИТЬ

как указано david, от astype до int не требуется, поскольку типы Boolean будут повышаться до int при вызове sum, поэтому это упростит:

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

Ответ 2

Вот еще одно решение, использующее apply() и 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)

Ответ 3

Вы можете посчитать нули на столбец, используя следующую функцию панда Python. Это может помочь кому-то, кому необходимо подсчитать конкретные значения для каждого столбца

df.isin([0]).sum()

Здесь df - это датафрейм, а значение, которое мы хотим считать, равно 0