|
11 | 11 | from pandas.core.index import Index, MultiIndex |
12 | 12 | from pandas import Panel, DataFrame, Series, notnull, isnull, Timestamp |
13 | 13 |
|
14 | | -from pandas.core.common import UnsortedIndexError |
15 | 14 | from pandas.core.dtypes.common import is_float_dtype, is_integer_dtype |
16 | 15 | import pandas.core.common as com |
17 | 16 | import pandas.util.testing as tm |
@@ -938,7 +937,7 @@ def test_stack_mixed_dtype(self): |
938 | 937 | df = df.sort_index(level=1, axis=1) |
939 | 938 |
|
940 | 939 | stacked = df.stack() |
941 | | - result = df['foo'].stack() |
| 940 | + result = df['foo'].stack().sort_index() |
942 | 941 | tm.assert_series_equal(stacked['foo'], result, check_names=False) |
943 | 942 | self.assertIs(result.name, None) |
944 | 943 | self.assertEqual(stacked['bar'].dtype, np.float_) |
@@ -2456,11 +2455,11 @@ def test_frame_getitem_not_sorted2(self): |
2456 | 2455 |
|
2457 | 2456 | assert df2_original.index.equals(df2.index) |
2458 | 2457 | expected = df2.sort_index() |
2459 | | - assert not expected.index.is_lexsorted() |
| 2458 | + assert expected.index.is_lexsorted() |
2460 | 2459 | assert expected.index.is_monotonic |
2461 | 2460 |
|
2462 | 2461 | result = df2.sort_index(level=0) |
2463 | | - assert not result.index.is_lexsorted() |
| 2462 | + assert result.index.is_lexsorted() |
2464 | 2463 | assert result.index.is_monotonic |
2465 | 2464 | tm.assert_frame_equal(result, expected) |
2466 | 2465 |
|
@@ -2536,8 +2535,7 @@ def test_sort_index_and_reconstruction(self): |
2536 | 2535 | concatted = pd.concat([df, df], keys=[0.8, 0.5]) |
2537 | 2536 | result = concatted.sort_index() |
2538 | 2537 |
|
2539 | | - # this will be monotonic, but not lexsorted! |
2540 | | - assert not result.index.is_lexsorted() |
| 2538 | + assert result.index.is_lexsorted() |
2541 | 2539 | assert result.index.is_monotonic |
2542 | 2540 |
|
2543 | 2541 | tm.assert_frame_equal(result, expected) |
@@ -2576,7 +2574,7 @@ def test_sort_index_and_reconstruction_doc_example(self): |
2576 | 2574 | levels=[['a', 'b'], ['aa', 'bb']], |
2577 | 2575 | labels=[[0, 0, 1, 1], [0, 1, 0, 1]])) |
2578 | 2576 | result = df.sort_index() |
2579 | | - assert not result.index.is_lexsorted() |
| 2577 | + assert result.index.is_lexsorted() |
2580 | 2578 | assert result.index.is_monotonic |
2581 | 2579 |
|
2582 | 2580 | tm.assert_frame_equal(result, expected) |
@@ -2618,22 +2616,29 @@ def my_func(group): |
2618 | 2616 | def test_sort_non_lexsorted(self): |
2619 | 2617 | # degenerate case where we sort but don't |
2620 | 2618 | # have a satisfying result :< |
2621 | | - |
| 2619 | + # GH 15797 |
2622 | 2620 | idx = MultiIndex([['A', 'B', 'C'], |
2623 | 2621 | ['c', 'b', 'a']], |
2624 | 2622 | [[0, 1, 2, 0, 1, 2], |
2625 | 2623 | [0, 2, 1, 1, 0, 2]]) |
2626 | 2624 |
|
2627 | | - df = DataFrame({'col': range(len(idx))}, index=idx) |
| 2625 | + df = DataFrame({'col': range(len(idx))}, |
| 2626 | + index=idx, |
| 2627 | + dtype='int64') |
2628 | 2628 | assert df.index.is_lexsorted() is False |
2629 | 2629 | assert df.index.is_monotonic is False |
2630 | 2630 |
|
2631 | | - result = df.sort_index() |
2632 | | - assert result.index.is_lexsorted() is False |
2633 | | - assert result.index.is_monotonic is True |
| 2631 | + sorted = df.sort_index() |
| 2632 | + assert sorted.index.is_lexsorted() is True |
| 2633 | + assert sorted.index.is_monotonic is True |
2634 | 2634 |
|
2635 | | - with pytest.raises(UnsortedIndexError): |
2636 | | - result.loc[pd.IndexSlice['B':'C', 'a':'c'], :] |
| 2635 | + expected = DataFrame( |
| 2636 | + {'col': [1, 4, 5, 2]}, |
| 2637 | + index=MultiIndex.from_tuples([('B', 'a'), ('B', 'c'), |
| 2638 | + ('C', 'a'), ('C', 'b')]), |
| 2639 | + dtype='int64') |
| 2640 | + result = sorted.loc[pd.IndexSlice['B':'C', 'a':'c'], :] |
| 2641 | + tm.assert_frame_equal(result, expected) |
2637 | 2642 |
|
2638 | 2643 | def test_sort_index_nan(self): |
2639 | 2644 | # GH 14784 |
|
0 commit comments