Поэлементное логическое ИЛИ в Пандах

Я хотел бы поэлементный логический оператор ИЛИ. Я знаю "или" само по себе не то, что я ищу.

Для И я хочу использовать & как объяснено здесь. Для НЕ я хочу использовать np.invert(), как описано здесь. Так что эквивалентно для ИЛИ?

3 ответа

Решение

Соответствующий оператор |:

 df[(df < 3) | (df == 5)]

будет поэлементно проверять, если значение меньше 3 или равно 5.

Взять поэлементное логическое ИЛИ двух Серий a а также b просто делать

a | b

Если вы работаете со столбцами одного фрейма данных, и есть варианты, где работает поэлементно. Вам также не нужно беспокоиться о скобках, потому что операторы сравнения имеют более высокий приоритет, чем логические/побитовые операторы. Например, следующееquerycall возвращает строки, в которых значения столбца 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
Другие вопросы по тегам