Why does pandas “None | True” return False when Python “None or True” returns True?
21
In pure Python, None or True
returns True
.
However with pandas when I'm doing a |
between two Series containing None values, results are not as I expected:
>>> df.to_dict()
{'buybox': {0: None}, 'buybox_y': {0: True}}
>>> df
buybox buybox_y
0 None True
>>> df['buybox'] = (df['buybox'] | df['buybox_y'])
>>> df
buybox buybox_y
0 False True
Expected result:
>>> df
buybox buybox_y
0 True True
I get the result I want by applying the OR operation twice, but I don't get why I should do this.
I'm not looking for a workaround (I have it by applying df['buybox'] = (df['buybox'] | df['buybox_y'])
twice in a row) but an explanation, thus the 'why' in the title.
python python-3.x pandas logical-or
|
andor
are two entirely different operators. Note thatNone | True
produces a type error. – chepner Apr 6 at 14:35|
for logical or, and we're not getting a TypeError. We're getting False somehow. – user2357112 supports Monica Apr 6 at 14:37|
is used for logical or and not bitwise or. My pandas version is 1.2.0 – politinsa Apr 6 at 14:39