При работе с pandas я столкнулся с проблемой, которую не могу объяснить. Позвольте мне привести пример, когда DataFrame называется «reviews»:
Следующий код не запускается:
reviews[(reviews["points"] >= 95) & (reviews["country"] in ["Australia"])]
Вместо этого можно использовать:
reviews[(reviews["points"] >= 95) & (reviews["country"].isin(["Australia"]))]
Мое первое предположение состояло в том, что это вызвано тем, как работает побитовый оператор &
, но проверяя это, я был удивлен, обнаружив следующую строку, равную True: True & ("hi" in ["hi", "Hello"])
Очевидно, reviews["country"]
это не просто ул. Я предполагаю, что с оператором >=
происходит какое-то волшебство c, которое не реализовано для in
. Следовательно, isin()
необходимо. Может быть, кто-то может объяснить это дальше / лучше?
Пример работает с чем-то вроде следующего DataFrame:
country description designation points
0 Italy Aromas Vulkà Bianco 87
Эта структура в основном взята из https://www.kaggle.com/learn/pandas урока 2.9.
Ошибка-MSG: ValueError: Значение истинности Серии неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().