|
10 | 10 |
|
11 | 11 | from pandas import (date_range, bdate_range, Timestamp,
|
12 | 12 | Index, MultiIndex, DataFrame, Series,
|
13 |
| - concat, Panel, DatetimeIndex) |
| 13 | + concat, Panel, DatetimeIndex, CategoricalIndex) |
14 | 14 | from pandas.errors import UnsupportedFunctionCall, PerformanceWarning
|
15 | 15 | from pandas.util.testing import (assert_panel_equal, assert_frame_equal,
|
16 | 16 | assert_series_equal, assert_almost_equal,
|
@@ -262,6 +262,29 @@ def test_grouper_column_and_index(self):
|
262 | 262 | expected = df_single.reset_index().groupby(['inner', 'B']).mean()
|
263 | 263 | assert_frame_equal(result, expected)
|
264 | 264 |
|
| 265 | + def test_groupby_categorical_index_and_columns(self): |
| 266 | + # GH18432 |
| 267 | + columns = ['A', 'B', 'A', 'B'] |
| 268 | + categories = ['B', 'A'] |
| 269 | + data = np.ones((5, 4), int) |
| 270 | + cat_columns = CategoricalIndex(columns, |
| 271 | + categories=categories, |
| 272 | + ordered=True) |
| 273 | + df = DataFrame(data=data, columns=cat_columns) |
| 274 | + result = df.groupby(axis=1, level=0).sum() |
| 275 | + expected_data = 2 * np.ones((5, 2), int) |
| 276 | + expected_columns = CategoricalIndex(categories, |
| 277 | + categories=categories, |
| 278 | + ordered=True) |
| 279 | + expected = DataFrame(data=expected_data, columns=expected_columns) |
| 280 | + assert_frame_equal(result, expected) |
| 281 | + |
| 282 | + # test transposed version |
| 283 | + df = DataFrame(data.T, index=cat_columns) |
| 284 | + result = df.groupby(axis=0, level=0).sum() |
| 285 | + expected = DataFrame(data=expected_data.T, index=expected_columns) |
| 286 | + assert_frame_equal(result, expected) |
| 287 | + |
265 | 288 | def test_grouper_getting_correct_binner(self):
|
266 | 289 |
|
267 | 290 | # GH 10063
|
|
0 commit comments