-
-
Notifications
You must be signed in to change notification settings - Fork 18.4k
BUG 0.20.0rc1: Empty series for var
/std
for frame with non-numeric columns
#16116
New issue
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
Comments
This is strange... I can reproduce on 0.20rc1, but not master. Rebuilding my dev environment now. |
@jcrist Thanks for the report! |
Ah, so this is only an issue if bottleneck is not installed. |
Hmm, I could reproduce this in my dev env, which has bottleneck installed .. |
Huh: So running this in try:
import bottleneck
print("have bottleneck")
except ImportError:
print("No bottleneck")
import pandas as pd
df = pd.DataFrame({'int': [1, 2, 3, 4], 'float': [1., 2., 3., 4.], 'str': ['a', 'b', 'c', 'd']})
print(df.std())
|
Hmm, OK, not sure why, but updated my env to latest master (previously was still from last week), and now it works correctly, so in accordance to your findings (as I have bottleneck installed), so ignore my above. And can confirm it is indeed triggered by not using bottleneck:
|
Here's the underlying issue, which gets swallowed due to how In [3]: pd.core.nanops.nanstd(pd.Series([1, 2, 3]))
Out[3]: 1.0
In [4]: pd.core.nanops._USE_BOTTLENECK = False
In [5]: pd.core.nanops.nanstd(pd.Series([1, 2, 3])) ---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in f(values, axis, skipna, **kwds)
106 else:
--> 107 result = alt(values, axis=axis, skipna=skipna, **kwds)
108 except Exception:
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in nanvar(values, axis, skipna, ddof)
396 values = values.copy()
--> 397 np.putmask(values, mask, 0)
398
TypeError: putmask() argument 1 must be numpy.ndarray, not Series
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in f(values, axis, skipna, **kwds)
106 else:
--> 107 result = alt(values, axis=axis, skipna=skipna, **kwds)
108 except Exception:
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in nanstd(values, axis, skipna, ddof)
375 def nanstd(values, axis=None, skipna=True, ddof=1):
--> 376 result = np.sqrt(nanvar(values, axis=axis, skipna=skipna, ddof=ddof))
377 return _wrap_results(result, values.dtype)
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in _f(*args, **kwargs)
49 with np.errstate(invalid='ignore'):
---> 50 return f(*args, **kwargs)
51 except ValueError as e:
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in f(values, axis, skipna, **kwds)
109 try:
--> 110 result = alt(values, axis=axis, skipna=skipna, **kwds)
111 except ValueError as e:
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in nanvar(values, axis, skipna, ddof)
396 values = values.copy()
--> 397 np.putmask(values, mask, 0)
398
TypeError: putmask() argument 1 must be numpy.ndarray, not Series
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in f(values, axis, skipna, **kwds)
106 else:
--> 107 result = alt(values, axis=axis, skipna=skipna, **kwds)
108 except Exception:
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in nanvar(values, axis, skipna, ddof)
396 values = values.copy()
--> 397 np.putmask(values, mask, 0)
398
TypeError: putmask() argument 1 must be numpy.ndarray, not Series
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
<ipython-input-5-7b66e79a9b96> in <module>()
----> 1 pd.core.nanops.nanstd(pd.Series([1, 2, 3]))
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in _f(*args, **kwargs)
48 try:
49 with np.errstate(invalid='ignore'):
---> 50 return f(*args, **kwargs)
51 except ValueError as e:
52 # we want to transform an object array
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in f(values, axis, skipna, **kwds)
108 except Exception:
109 try:
--> 110 result = alt(values, axis=axis, skipna=skipna, **kwds)
111 except ValueError as e:
112 # we want to transform an object array
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in nanstd(values, axis, skipna, ddof)
374 @bottleneck_switch(ddof=1)
375 def nanstd(values, axis=None, skipna=True, ddof=1):
--> 376 result = np.sqrt(nanvar(values, axis=axis, skipna=skipna, ddof=ddof))
377 return _wrap_results(result, values.dtype)
378
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in _f(*args, **kwargs)
48 try:
49 with np.errstate(invalid='ignore'):
---> 50 return f(*args, **kwargs)
51 except ValueError as e:
52 # we want to transform an object array
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in f(values, axis, skipna, **kwds)
108 except Exception:
109 try:
--> 110 result = alt(values, axis=axis, skipna=skipna, **kwds)
111 except ValueError as e:
112 # we want to transform an object array
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/nanops.py in nanvar(values, axis, skipna, ddof)
395 if skipna:
396 values = values.copy()
--> 397 np.putmask(values, mask, 0)
398
399 # xref GH10242
TypeError: putmask() argument 1 must be numpy.ndarray, not Series
Looking into it now. |
@TomAugspurger these are NOT defined for Series and only accept arrays. |
Right, I think that last traceback isn't the real failure. Do you know what in your |
just pushed a PR to fix. was an oversight on That apply code is complicated, it was supposed to raise to break out of that, but was raising the wrong exception. |
The text was updated successfully, but these errors were encountered: