-
-
Notifications
You must be signed in to change notification settings - Fork 19.1k
Description
Pandas version checks
-
I have checked that this issue has not already been reported.
-
I have confirmed this bug exists on the latest version of pandas.
-
I have confirmed this bug exists on the main branch of pandas.
Reproducible Example
import pandas as pd
import numpy as np
# On trunk
pd.Series([1], dtype="bool") // np.bool_(0) # => NotImplementedError
pd.Series([1], dtype="bool") // pd.Series([0], dtype="bool") # => NotImplementedError
pd.Series([1, 0], dtype="bool") // pd.Series([0], dtype="bool") # => ZeroDivisionError
pd.Series([1, 0], dtype="bool") // pd.Series([1], dtype="bool") # => pd.Series([1, np.nan], dtype="object")
pd.Series([1, 0], dtype="bool") // pd.Series([0, 0], dtype="bool") # => NotImplementedError
pd.Series([1, 0], dtype="bool") // pd.Series([1, 1], dtype="bool") # => NotImplementedError
Issue Description
If only one operand is a Series
, we consistently get a NotImplementedError
for pow
, truediv
, and floordiv
if both operands have boolean dtypes.
If both operands are series (with bool dtype) the behaviour is dependent on whether or not the series have matching lengths. When the lengths mismatch, for some reason the NotImplementedError
check is bypassed and we just evaluate as normal.
Expected Behavior
If one is going to not allow division or exponentiation of boolean dtypes, it should happen consistently.
Aside: FWIW, I don't really like this choice, why are booleans special in this way? (I see some discussion in #41165 but with no conclusion).
Installed Versions
INSTALLED VERSIONS
commit : e41b6d7
python : 3.10.6.final.0
python-bits : 64
OS : Darwin
OS-release : 21.6.0
Version : Darwin Kernel Version 21.6.0: Mon Aug 22 20:19:52 PDT 2022; root:xnu-8020.140.49~2/RELEASE_ARM64_T6000
machine : arm64
processor : arm
byteorder : little
LC_ALL : None
LANG : en_GB.UTF-8
LOCALE : en_GB.UTF-8
pandas : 2.0.0.dev0+643.ge41b6d7827.dirty
numpy : 1.23.4
pytz : 2022.6
dateutil : 2.8.2
setuptools : 65.5.1
pip : 22.3.1
Cython : 0.29.32
pytest : 7.2.0
hypothesis : 6.56.4
sphinx : 4.5.0
blosc : None
feather : None
xlsxwriter : 3.0.3
lxml.etree : 4.9.1
html5lib : 1.1
pymysql : 1.0.2
psycopg2 : 2.9.3
jinja2 : 3.0.3
IPython : 8.6.0
pandas_datareader: 0.10.0
bs4 : 4.11.1
bottleneck : 1.3.5
brotli :
fastparquet : 0.8.3
fsspec : 2021.11.0
gcsfs : 2021.11.0
matplotlib : 3.6.2
numba : 0.56.3
numexpr : 2.8.3
odfpy : None
openpyxl : 3.0.10
pandas_gbq : 0.17.9
pyarrow : 9.0.0
pyreadstat : 1.2.0
pyxlsb : 1.0.10
s3fs : 2021.11.0
scipy : 1.9.3
snappy :
sqlalchemy : 1.4.43
tables : 3.7.0
tabulate : 0.9.0
xarray : 2022.11.0
xlrd : 2.0.1
zstandard : 0.19.0
tzdata : None
qtpy : None
pyqt5 : None