|
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