pandas .DataFrame, зачем использовать скобки для переноса операций для побитового сравнения - PullRequest
1 голос
/ 12 июля 2020

DataFrame называется c, и у него есть столбец с именем price, в котором я хочу знать строки с ценой, равной 2 или 3. И здесь работает код

c[(c['price'] == 2) | (c['price'] == 3)]

Но не 'здесь не работает:

c[c['price'] == 2 | c['price'] == 3]

и вызывает исключение:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

Единственное отличие заключается во второй строке кода, нет скобок' () ', заключенных в операцию . Так почему скобки так важны?

Большое спасибо!

1 Ответ

5 голосов
/ 12 июля 2020
  • Согласно Pandas: логическая индексация
    • Другой распространенной операцией является использование логических векторов для фильтрации данных. Операторы: | для or, & для and и ~ для not. Эти должны быть сгруппированы с использованием круглых скобок, поскольку по умолчанию Python будет оценивать выражение, такое как df['A'] > 2 & df['B'] < 3, как df['A'] > (2 & df['B']) < 3, а желаемый порядок оценки - (df['A > 2) & (df['B'] < 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...