cut/qcut "retbins" broken in 0.15.0 · Issue #8589 · pandas-dev/pandas (original) (raw)
Works in 0.14.1:
In [11]: s = pd.Series(np.random.randn(100))
In [12]: pd.cut(s, 10, retbins=True) Out[12]: ( (0.993, 1.376] (-0.924, -0.541] (-0.158, 0.226] (-1.695, -1.308] (-0.924, -0.541] (-0.541, -0.158] (-0.158, 0.226] (-0.541, -0.158] (0.609, 0.993] (0.226, 0.609] (0.226, 0.609] (0.609, 0.993] (0.609, 0.993] ... (0.993, 1.376] (-0.541, -0.158] (0.226, 0.609] (0.226, 0.609] (-0.158, 0.226] (0.226, 0.609] (-0.158, 0.226] (-0.924, -0.541] (-1.695, -1.308] (0.993, 1.376] (-0.158, 0.226] (-0.924, -0.541] (0.993, 1.376] Levels (10): Index(['(-1.695, -1.308]', '(-1.308, -0.924]', '(-0.924, -0.541]', '(-0.541, -0.158]', '(-0.158, 0.226]', '(0.226, 0.609]', '(0.609, 0.993]', '(0.993, 1.376]', '(1.376, 1.759]', '(1.759, 2.143]'], dtype=object) Length: 100, array([-1.69479925, -1.30760325, -0.92424086, -0.54087848, -0.1575161 , 0.22584629, 0.60920867, 0.99257106, 1.37593344, 1.75929582, 2.14265821]))
but does not work in 0.15.0/current master:
In [13]: pd.cut(s, 10, retbins=True)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-13-958e04d69222> in <module>()
----> 1 pd.cut(s, 10, retbins=True)
/home/andrew/git/pandas-rosnfeld/pandas/tools/tile.pyc in cut(x, bins, right, labels, retbins, precision, include_lowest)
113 include_lowest=include_lowest)
114 if isinstance(x, Series):
--> 115 res = Series(res, index=x.index)
116 return res
117
/home/andrew/git/pandas-rosnfeld/pandas/core/series.pyc in __init__(self, data, index, dtype, name, copy, fastpath)
210 raise_cast_failure=True)
211
--> 212 data = SingleBlockManager(data, index, fastpath=True)
213
214 generic.NDFrame.__init__(self, data, fastpath=True)
/home/andrew/git/pandas-rosnfeld/pandas/core/internals.pyc in __init__(self, block, axis, do_integrity_check, fastpath)
3324 block = make_block(block,
3325 placement=slice(0, len(axis)),
-> 3326 ndim=1, fastpath=True)
3327
3328 self.blocks = [block]
/home/andrew/git/pandas-rosnfeld/pandas/core/internals.pyc in make_block(values, placement, klass, ndim, dtype, fastpath)
2058
2059 return klass(values, ndim=ndim, fastpath=fastpath,
-> 2060 placement=placement)
2061
2062
/home/andrew/git/pandas-rosnfeld/pandas/core/internals.pyc in __init__(self, values, ndim, fastpath, placement)
1372 super(ObjectBlock, self).__init__(values, ndim=ndim,
1373 fastpath=fastpath,
-> 1374 placement=placement)
1375
1376 @property
/home/andrew/git/pandas-rosnfeld/pandas/core/internals.pyc in __init__(self, values, placement, ndim, fastpath)
73 raise ValueError('Wrong number of items passed %d,'
74 ' placement implies %d' % (
---> 75 len(self.values), len(self.mgr_locs)))
76
77 @property
ValueError: Wrong number of items passed 2, placement implies 100
The same goes for qcut. These work if retbins=False.
I found this while testing out the new release, wanted to take a look at the Categorical type. I should have done this with the RC and caught it sooner...