Skip to content

Commit

Permalink
BUG: fixed wrong order of ordered labels in pd.cut()
Browse files Browse the repository at this point in the history
  • Loading branch information
economy committed Jun 1, 2017
1 parent ee8346d commit 3898b72
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 6 deletions.
6 changes: 1 addition & 5 deletions doc/source/whatsnew/v0.20.2.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,9 @@ Bug Fixes
- Bug in ``DataFrame.update()`` with ``overwrite=False`` and ``NaN values`` (:issue:`15593`)
- Passing an invalid engine to :func:`read_csv` now raises an informative
``ValueError`` rather than ``UnboundLocalError``. (:issue:`16511`)




- Bug in ``pd.cut`` when ``labels`` are set (:issue:`16459`)
- Fixed a compatibility issue with IPython 6.0's tab completion showing deprecation warnings on Categoricals (:issue:`16409`)


Conversion
^^^^^^^^^^

Expand Down
2 changes: 1 addition & 1 deletion pandas/core/reshape/tile.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ def _bins_to_cuts(x, bins, right=True, labels=None,
raise ValueError('Bin labels must be one fewer than '
'the number of bin edges')
if not is_categorical_dtype(labels):
labels = Categorical(labels, ordered=True)
labels = Categorical(labels, categories=labels, ordered=True)

np.putmask(ids, na_mask, 0)
result = algos.take_nd(labels, ids - 1)
Expand Down
7 changes: 7 additions & 0 deletions pandas/tests/reshape/test_tile.py
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ def test_cut_pass_labels(self):

result = cut(arr, bins, labels=labels)
exp = Categorical(['Medium'] + 4 * ['Small'] + ['Medium', 'Large'],
categories=labels,
ordered=True)
tm.assert_categorical_equal(result, exp)

Expand All @@ -219,6 +220,12 @@ def test_cut_pass_labels(self):
exp = Categorical.from_codes([1] + 4 * [0] + [1, 2], labels)
tm.assert_categorical_equal(result, exp)

labels = ['Good', 'Medium', 'Bad']
result = cut(arr, 3, labels=labels)
exp = cut(arr, 3, labels=Categorical(labels, categories=labels,
ordered=True))
tm.assert_categorical_equal(result, exp)

def test_qcut_include_lowest(self):
values = np.arange(10)

Expand Down

0 comments on commit 3898b72

Please sign in to comment.