Поэлементное логическое ИЛИ в Пандах
3 ответа
Решение
Соответствующий оператор |
:
df[(df < 3) | (df == 5)]
будет поэлементно проверять, если значение меньше 3 или равно 5.
Взять поэлементное логическое ИЛИ двух Серий a
а также b
просто делать
a | b
Если вы работаете со столбцами одного фрейма данных, и есть варианты, где работает поэлементно. Вам также не нужно беспокоиться о скобках, потому что операторы сравнения имеют более высокий приоритет, чем логические/побитовые операторы. Например, следующееquery
call возвращает строки, в которых значения столбца A >1, а значения столбца B > 2.
df = pd.DataFrame({'A': [1,2,0], 'B': [0,1,2]})
df.query('A > 1 or B > 2') # == df[(df['A']>1) | (df['B']>2)]
# A B
# 1 2 1
или сeval
вы можете вернуть логическую серию (опять жеor
отлично работает как поэлементный оператор).
df.eval('A > 1 or B > 2')
# 0 False
# 1 True
# 2 False
# dtype: bool