Ошибка при подсчете экземпляров False в кадре данных

#python #pandas #count

#питон #панды #считать

Вопрос:

У меня есть фрейм данных под названием p следующим образом

 1 True 2 True 3 True 4 True 5 True 6 True 7 True 8 True 9 True dtype: boolgt;  

и соответствующая часть моего кода выглядит следующим образом

 count=(p.value_counts().loc[False])  

Я получаю ошибку с приведенным выше кодом. Я пытаюсь подсчитать количество вхождений False в кадре данных.

Почему возникает эта ошибка и как я могу ее исправить? Ложь отсутствует в кадре данных, поэтому ответ должен быть 0?

Ошибка выглядит так

 File "C:ProgramDataAnaconda3libsite-packagespandascoreindexing.py", line 895, in __getitem__  return self._getitem_axis(maybe_callable, axis=axis)   File "C:ProgramDataAnaconda3libsite-packagespandascoreindexing.py", line 1124, in _getitem_axis  return self._get_label(key, axis=axis)   File "C:ProgramDataAnaconda3libsite-packagespandascoreindexing.py", line 1073, in _get_label  return self.obj.xs(label, axis=axis)   File "C:ProgramDataAnaconda3libsite-packagespandascoregeneric.py", line 3739, in xs  loc = index.get_loc(key)   File "C:ProgramDataAnaconda3libsite-packagespandascoreindexesbase.py", line 3082, in get_loc  raise KeyError(key) from err  KeyError: False  

Комментарии:

1. Попробуй count = p.value_counts().eq(False).sum()

Ответ №1:

Похоже p , что на самом деле это ряд (столбец), а не весь фрейм данных (таблица). В этом случае, чтобы подсчитать количество False значений, вы можете легко сделать это:

 count = p.eq(False).sum()  

Комментарии:

1. На самом деле мне следовало исправиться раньше. Я протестировал следующую серию 0 Ложных 1 Ложных 2 Ложных 3 Ложных 4 Ложных 5 Ложных 6 Истинных 7 Ложных 8 Ложных 9 Истинных dtype: bool и получил ответ 0, когда ответ должен был быть 8. Но count = p.eq(False).sum() дает правильный ответ, спасибо.

2. Да, после написания этого ответа я подумал, что код, который я отправил ранее, на самом деле не будет работать.