Сравните две серии панд с условием и присвойте значение False, если условие совпадает, иначе сохраните значение первой серии

#pandas #series

Вопрос:

У меня есть две серии панд,

 s1 = pd.Series([False, True, False, True, False], index= np.arange(0,5))

0    False

1     True

2    False

3     True

4    False

dtype: bool

s2 = pd.Series([False, False, False, True, True], index= np.arange(0,5))

0    False

1    False

2    False

3     True

4     True

dtype: bool
 

Ожидаемый результат,

 0    False

1     True

2    False

3    False

4    False
 

Как сравнить эти две серии панд?
Я хочу сравнить серию s1 с s2 и сохранить значение серии s1, если совпадения нет.

Ответ №1:

Используйте amp; для побитовой AND с инвертирующей маской по ~ :

 print (s1 amp; ~s2)
0    False
1     True
2    False
3    False
4    False
dtype: bool
 

Комментарии:

1. Израэль, ты можешь хоть раз объяснить мне эту логику?

2. @Rohit — Инвертирующая маска означает изменение True на False и Fale на True, поэтому серия pd.Series([False, False, False, True, True], index= np.arange(0,5)) изменяется на pd.Series([True, True, True, False, False], index= np.arange(0,5)) . AND означает , что вывод True , если оба s1 и s2 являются истинными, так что здесь только значения для индекса 1

3. Израэль, спасибо за объяснение.