From b9bc1dba8f0690550fcdbe7bea456a7dabbfa604 Mon Sep 17 00:00:00 2001 From: Alex Thorne Date: Sat, 26 Sep 2020 00:45:42 +0100 Subject: [PATCH 1/3] TST: GH23452 test reorder_categories() on categorical index --- pandas/tests/indexing/test_categorical.py | 28 +++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/pandas/tests/indexing/test_categorical.py b/pandas/tests/indexing/test_categorical.py index 9f3ee81fac2eb..a2cd465e64b30 100644 --- a/pandas/tests/indexing/test_categorical.py +++ b/pandas/tests/indexing/test_categorical.py @@ -807,3 +807,31 @@ def test_loc_with_non_string_categories(self, idx_values, ordered): result.loc[sl, "A"] = ["qux", "qux2"] expected = DataFrame({"A": ["qux", "qux2", "baz"]}, index=cat_idx) tm.assert_frame_equal(result, expected) + + @pytest.mark.parametrize( + "categories", + [ + pytest.param(["a", "b", "c"], id="str"), + pytest.param( + [pd.Interval(0, 1), pd.Interval(1, 2), pd.Interval(2, 3)], + id="pd.Interval", + ), + ], + ) + def test_categorical_index_reorder_categories(self, categories): + # GH23452 + df = DataFrame( + {"foo": [1, 2, 3]}, + index=CategoricalIndex( + data=categories, categories=categories, ordered=True + ), + ) + df.index = df.index.reorder_categories(df.index.categories[::-1]) + actual = df.sort_index() + expected = DataFrame( + {"foo": [3, 2, 1]}, + index=CategoricalIndex( + data=categories[::-1], categories=categories[::-1], ordered=True + ), + ) + tm.assert_frame_equal(actual, expected) From c1d9515c25fbb4a79b94b381fa01a1504550fb55 Mon Sep 17 00:00:00 2001 From: Alex Thorne Date: Sat, 26 Sep 2020 01:01:16 +0100 Subject: [PATCH 2/3] TST: GH23452 make test more robust for future parameterizations Previously test would have failed if a value of the `categories` parameter were added with len != 3. --- pandas/tests/indexing/test_categorical.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/tests/indexing/test_categorical.py b/pandas/tests/indexing/test_categorical.py index a2cd465e64b30..d21e43e9d4807 100644 --- a/pandas/tests/indexing/test_categorical.py +++ b/pandas/tests/indexing/test_categorical.py @@ -821,7 +821,7 @@ def test_loc_with_non_string_categories(self, idx_values, ordered): def test_categorical_index_reorder_categories(self, categories): # GH23452 df = DataFrame( - {"foo": [1, 2, 3]}, + {"foo": range(len(categories))}, index=CategoricalIndex( data=categories, categories=categories, ordered=True ), @@ -829,7 +829,7 @@ def test_categorical_index_reorder_categories(self, categories): df.index = df.index.reorder_categories(df.index.categories[::-1]) actual = df.sort_index() expected = DataFrame( - {"foo": [3, 2, 1]}, + {"foo": reversed(range(len(categories)))}, index=CategoricalIndex( data=categories[::-1], categories=categories[::-1], ordered=True ), From a240620e77f80a95fe49ea5e07e5542040ed0102 Mon Sep 17 00:00:00 2001 From: Alex Thorne Date: Sat, 26 Sep 2020 10:12:08 +0100 Subject: [PATCH 3/3] TST: GH23452 improve symbol names per review comment --- pandas/tests/indexing/test_categorical.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/tests/indexing/test_categorical.py b/pandas/tests/indexing/test_categorical.py index d21e43e9d4807..fae229aecc3d4 100644 --- a/pandas/tests/indexing/test_categorical.py +++ b/pandas/tests/indexing/test_categorical.py @@ -818,7 +818,7 @@ def test_loc_with_non_string_categories(self, idx_values, ordered): ), ], ) - def test_categorical_index_reorder_categories(self, categories): + def test_reorder_index_with_categories(self, categories): # GH23452 df = DataFrame( {"foo": range(len(categories))}, @@ -827,11 +827,11 @@ def test_categorical_index_reorder_categories(self, categories): ), ) df.index = df.index.reorder_categories(df.index.categories[::-1]) - actual = df.sort_index() + result = df.sort_index() expected = DataFrame( {"foo": reversed(range(len(categories)))}, index=CategoricalIndex( data=categories[::-1], categories=categories[::-1], ordered=True ), ) - tm.assert_frame_equal(actual, expected) + tm.assert_frame_equal(result, expected)