Pandas DataFrame isin (): как работает условный отбор в деталях? - PullRequest
0 голосов
/ 17 марта 2020

При работе с 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 ().

1 Ответ

2 голосов
/ 17 марта 2020

in - это ключевое слово python, а isin - метод для Series, который проверяет, "содержится ли каждый элемент в DataFrame в значениях". ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...