#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. Да, после написания этого ответа я подумал, что код, который я отправил ранее, на самом деле не будет работать.