We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
np.log
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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.
import pandas as pd import numpy as np import io data = '''name,age,test1,test2,teacher Adam,15,95.0,80,Ashby Bob,16,81.0,82,Ashby Dave,16,89.0,84,Jones Fred,15,,88,Jones''' scores = pd.read_csv(io.StringIO(data), dtype_backend='pyarrow', engine='pyarrow' ) (scores .test1 .apply(np.log) )
This throws an exception
AttributeError Traceback (most recent call last) AttributeError: 'float' object has no attribute 'log' The above exception was the direct cause of the following exception: TypeError Traceback (most recent call last) Cell In[148], line 17 5 data = '''name,age,test1,test2,teacher 6 Adam,15,95.0,80,Ashby 7 Bob,16,81.0,82,Ashby 8 Dave,16,89.0,84,Jones 9 Fred,15,,88,Jones''' 10 scores = pd.read_csv(io.StringIO(data), dtype_backend='pyarrow', 11 engine='pyarrow' 12 ) 15 (scores 16 .test1 ---> 17 .apply(np.log) 18 ) File ~/.envs/menv/lib/python3.10/site-packages/pandas/core/series.py:4760, in Series.apply(self, func, convert_dtype, args, by_row, **kwargs) 4625 def apply( 4626 self, 4627 func: AggFuncType, (...) 4632 **kwargs, 4633 ) -> DataFrame | Series: 4634 """ 4635 Invoke function on values of Series. 4636 (...) 4751 dtype: float64 4752 """ 4753 return SeriesApply( 4754 self, 4755 func, 4756 convert_dtype=convert_dtype, 4757 by_row=by_row, 4758 args=args, 4759 kwargs=kwargs, -> 4760 ).apply() File ~/.envs/menv/lib/python3.10/site-packages/pandas/core/apply.py:1207, in SeriesApply.apply(self) 1204 return self.apply_compat() 1206 # self.func is Callable -> 1207 return self.apply_standard() File ~/.envs/menv/lib/python3.10/site-packages/pandas/core/apply.py:1269, in SeriesApply.apply_standard(self) 1267 if isinstance(func, np.ufunc): 1268 with np.errstate(all="ignore"): -> 1269 return func(obj, *self.args, **self.kwargs) 1270 elif not self.by_row: 1271 return func(obj, *self.args, **self.kwargs) File ~/.envs/menv/lib/python3.10/site-packages/pandas/core/generic.py:2102, in NDFrame.__array_ufunc__(self, ufunc, method, *inputs, **kwargs) 2098 @final 2099 def __array_ufunc__( 2100 self, ufunc: np.ufunc, method: str, *inputs: Any, **kwargs: Any 2101 ): -> 2102 return arraylike.array_ufunc(self, ufunc, method, *inputs, **kwargs) File ~/.envs/menv/lib/python3.10/site-packages/pandas/core/arraylike.py:396, in array_ufunc(self, ufunc, method, *inputs, **kwargs) 393 elif self.ndim == 1: 394 # ufunc(series, ...) 395 inputs = tuple(extract_array(x, extract_numpy=True) for x in inputs) --> 396 result = getattr(ufunc, method)(*inputs, **kwargs) 397 else: 398 # ufunc(dataframe) 399 if method == "__call__" and not kwargs: 400 # for np.<ufunc>(..) calls 401 # kwargs cannot necessarily be handled block-by-block, so only 402 # take this path if there are no kwargs File ~/.envs/menv/lib/python3.10/site-packages/pandas/core/arrays/base.py:2167, in ExtensionArray.__array_ufunc__(self, ufunc, method, *inputs, **kwargs) 2164 if result is not NotImplemented: 2165 return result -> 2167 return arraylike.default_array_ufunc(self, ufunc, method, *inputs, **kwargs) File ~/.envs/menv/lib/python3.10/site-packages/pandas/core/arraylike.py:489, in default_array_ufunc(self, ufunc, method, *inputs, **kwargs) 485 raise NotImplementedError 487 new_inputs = [x if x is not self else np.asarray(x) for x in inputs] --> 489 return getattr(ufunc, method)(*new_inputs, **kwargs) TypeError: loop of ufunc does not support argument 0 of type float which has no callable log method
If we comment out the dtype_backend it works and gives the desired results.
dtype_backend
commit : e86ed37 python : 3.10.13.final.0 python-bits : 64 OS : Darwin OS-release : 21.6.0 Version : Darwin Kernel Version 21.6.0: Wed Aug 10 14:28:23 PDT 2022; root:xnu-8020.141.5~2/RELEASE_ARM64_T6000 machine : arm64 processor : arm byteorder : little LC_ALL : en_US.UTF-8 LANG : None LOCALE : en_US.UTF-8
pandas : 2.1.1 numpy : 1.23.5 pytz : 2023.3 dateutil : 2.8.2 setuptools : 67.6.1 pip : 23.2.1 Cython : 3.0.4 pytest : 7.2.0 hypothesis : 6.81.2 sphinx : None blosc : None feather : None xlsxwriter : 3.1.2 lxml.etree : 4.9.2 html5lib : 1.1 pymysql : None psycopg2 : None jinja2 : 3.1.2 IPython : 8.8.0 pandas_datareader : None bs4 : 4.11.1 bottleneck : None dataframe-api-compat: None fastparquet : None fsspec : 2023.3.0 gcsfs : None matplotlib : 3.6.2 numba : 0.56.4 numexpr : 2.8.4 odfpy : None openpyxl : 3.0.10 pandas_gbq : None pyarrow : 13.0.0 pyreadstat : None pyxlsb : None s3fs : None scipy : 1.10.0 sqlalchemy : 2.0.21 tables : None tabulate : 0.9.0 xarray : None xlrd : 2.0.1 zstandard : None tzdata : 2023.3 qtpy : None pyqt5 : None
The text was updated successfully, but these errors were encountered:
cc @phofl @jorisvandenbossche - not sure what the expectation should be on using NumPy funcs on pd.NA.
print(np.log([1, np.nan, 3])) # [0. nan 1.09861229] print(np.log([1, pd.NA, 3])) # raises
Sorry, something went wrong.
The masked array case should work since today,
the culprit here is that we convert to object in numpy, we merged a pr today that fixes this for masked, arrow to follow
Successfully merging a pull request may close this issue.
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
Issue Description
This throws an exception
Expected Behavior
If we comment out the
dtype_backend
it works and gives the desired results.Installed Versions
INSTALLED VERSIONS
commit : e86ed37
python : 3.10.13.final.0
python-bits : 64
OS : Darwin
OS-release : 21.6.0
Version : Darwin Kernel Version 21.6.0: Wed Aug 10 14:28:23 PDT 2022; root:xnu-8020.141.5~2/RELEASE_ARM64_T6000
machine : arm64
processor : arm
byteorder : little
LC_ALL : en_US.UTF-8
LANG : None
LOCALE : en_US.UTF-8
pandas : 2.1.1
numpy : 1.23.5
pytz : 2023.3
dateutil : 2.8.2
setuptools : 67.6.1
pip : 23.2.1
Cython : 3.0.4
pytest : 7.2.0
hypothesis : 6.81.2
sphinx : None
blosc : None
feather : None
xlsxwriter : 3.1.2
lxml.etree : 4.9.2
html5lib : 1.1
pymysql : None
psycopg2 : None
jinja2 : 3.1.2
IPython : 8.8.0
pandas_datareader : None
bs4 : 4.11.1
bottleneck : None
dataframe-api-compat: None
fastparquet : None
fsspec : 2023.3.0
gcsfs : None
matplotlib : 3.6.2
numba : 0.56.4
numexpr : 2.8.4
odfpy : None
openpyxl : 3.0.10
pandas_gbq : None
pyarrow : 13.0.0
pyreadstat : None
pyxlsb : None
s3fs : None
scipy : 1.10.0
sqlalchemy : 2.0.21
tables : None
tabulate : 0.9.0
xarray : None
xlrd : 2.0.1
zstandard : None
tzdata : 2023.3
qtpy : None
pyqt5 : None
The text was updated successfully, but these errors were encountered: