コード例 #1
0
    def test_is_lexsorted(self):
        levels = [[0, 1], [0, 1, 2]]

        index = MultiIndex(levels=levels,
                           codes=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]])
        assert index.is_lexsorted()

        index = MultiIndex(levels=levels,
                           codes=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 2, 1]])
        assert not index.is_lexsorted()

        index = MultiIndex(levels=levels,
                           codes=[[0, 0, 1, 0, 1, 1], [0, 1, 0, 2, 2, 1]])
        assert not index.is_lexsorted()
        assert index.lexsort_depth == 0
コード例 #2
0
ファイル: test_sorting.py プロジェクト: TomAugspurger/pandas
def test_reconstruct_sort():

    # starts off lexsorted & monotonic
    mi = MultiIndex.from_arrays([
        ['A', 'A', 'B', 'B', 'B'], [1, 2, 1, 2, 3]
    ])
    assert mi.is_lexsorted()
    assert mi.is_monotonic

    recons = mi._sort_levels_monotonic()
    assert recons.is_lexsorted()
    assert recons.is_monotonic
    assert mi is recons

    assert mi.equals(recons)
    assert Index(mi.values).equals(Index(recons.values))

    # cannot convert to lexsorted
    mi = pd.MultiIndex.from_tuples([('z', 'a'), ('x', 'a'), ('y', 'b'),
                                    ('x', 'b'), ('y', 'a'), ('z', 'b')],
                                   names=['one', 'two'])
    assert not mi.is_lexsorted()
    assert not mi.is_monotonic

    recons = mi._sort_levels_monotonic()
    assert not recons.is_lexsorted()
    assert not recons.is_monotonic

    assert mi.equals(recons)
    assert Index(mi.values).equals(Index(recons.values))

    # cannot convert to lexsorted
    mi = MultiIndex(levels=[['b', 'd', 'a'], [1, 2, 3]],
                    labels=[[0, 1, 0, 2], [2, 0, 0, 1]],
                    names=['col1', 'col2'])
    assert not mi.is_lexsorted()
    assert not mi.is_monotonic

    recons = mi._sort_levels_monotonic()
    assert not recons.is_lexsorted()
    assert not recons.is_monotonic

    assert mi.equals(recons)
    assert Index(mi.values).equals(Index(recons.values))