@@ -1791,18 +1791,19 @@ def aggfun(ser):
1791
1791
agged2 = df .groupby (keys ).aggregate (aggfun )
1792
1792
assert len (agged2 .columns ) + 1 == len (df .columns )
1793
1793
1794
- def test_groupby_level (self ):
1794
+ @pytest .mark .parametrize ('sort' , [True , False ])
1795
+ def test_groupby_level (self , sort ):
1795
1796
frame = self .mframe
1796
1797
deleveled = frame .reset_index ()
1797
1798
1798
- result0 = frame .groupby (level = 0 ).sum ()
1799
- result1 = frame .groupby (level = 1 ).sum ()
1799
+ result0 = frame .groupby (level = 0 , sort = sort ).sum ()
1800
+ result1 = frame .groupby (level = 1 , sort = sort ).sum ()
1800
1801
1801
- expected0 = frame .groupby (deleveled ['first' ].values ).sum ()
1802
- expected1 = frame .groupby (deleveled ['second' ].values ).sum ()
1802
+ expected0 = frame .groupby (deleveled ['first' ].values , sort = sort ).sum ()
1803
+ expected1 = frame .groupby (deleveled ['second' ].values , sort = sort ).sum ()
1803
1804
1804
- expected0 = expected0 . reindex ( frame . index .levels [ 0 ])
1805
- expected1 = expected1 . reindex ( frame . index .levels [ 1 ])
1805
+ expected0 . index .name = 'first'
1806
+ expected1 . index .name = 'second'
1806
1807
1807
1808
assert result0 .index .name == 'first'
1808
1809
assert result1 .index .name == 'second'
@@ -1813,15 +1814,15 @@ def test_groupby_level(self):
1813
1814
assert result1 .index .name == frame .index .names [1 ]
1814
1815
1815
1816
# groupby level name
1816
- result0 = frame .groupby (level = 'first' ).sum ()
1817
- result1 = frame .groupby (level = 'second' ).sum ()
1817
+ result0 = frame .groupby (level = 'first' , sort = sort ).sum ()
1818
+ result1 = frame .groupby (level = 'second' , sort = sort ).sum ()
1818
1819
assert_frame_equal (result0 , expected0 )
1819
1820
assert_frame_equal (result1 , expected1 )
1820
1821
1821
1822
# axis=1
1822
1823
1823
- result0 = frame .T .groupby (level = 0 , axis = 1 ).sum ()
1824
- result1 = frame .T .groupby (level = 1 , axis = 1 ).sum ()
1824
+ result0 = frame .T .groupby (level = 0 , axis = 1 , sort = sort ).sum ()
1825
+ result1 = frame .T .groupby (level = 1 , axis = 1 , sort = sort ).sum ()
1825
1826
assert_frame_equal (result0 , expected0 .T )
1826
1827
assert_frame_equal (result1 , expected1 .T )
1827
1828
@@ -1835,15 +1836,16 @@ def test_groupby_level_index_names(self):
1835
1836
df .groupby (level = 'exp' )
1836
1837
pytest .raises (ValueError , df .groupby , level = 'foo' )
1837
1838
1838
- def test_groupby_level_with_nas (self ):
1839
+ @pytest .mark .parametrize ('sort' , [True , False ])
1840
+ def test_groupby_level_with_nas (self , sort ):
1839
1841
index = MultiIndex (levels = [[1 , 0 ], [0 , 1 , 2 , 3 ]],
1840
1842
labels = [[1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 ], [0 , 1 , 2 , 3 , 0 , 1 ,
1841
1843
2 , 3 ]])
1842
1844
1843
1845
# factorizing doesn't confuse things
1844
1846
s = Series (np .arange (8. ), index = index )
1845
- result = s .groupby (level = 0 ).sum ()
1846
- expected = Series ([22 . , 6 . ], index = [1 , 0 ])
1847
+ result = s .groupby (level = 0 , sort = sort ).sum ()
1848
+ expected = Series ([6 . , 22 . ], index = [0 , 1 ])
1847
1849
assert_series_equal (result , expected )
1848
1850
1849
1851
index = MultiIndex (levels = [[1 , 0 ], [0 , 1 , 2 , 3 ]],
@@ -1852,8 +1854,8 @@ def test_groupby_level_with_nas(self):
1852
1854
1853
1855
# factorizing doesn't confuse things
1854
1856
s = Series (np .arange (8. ), index = index )
1855
- result = s .groupby (level = 0 ).sum ()
1856
- expected = Series ([18 . , 6 . ], index = [1 , 0 ])
1857
+ result = s .groupby (level = 0 , sort = sort ).sum ()
1858
+ expected = Series ([6 . , 18 . ], index = [0.0 , 1. 0 ])
1857
1859
assert_series_equal (result , expected )
1858
1860
1859
1861
def test_groupby_level_apply (self ):
@@ -1936,9 +1938,13 @@ def test_groupby_complex(self):
1936
1938
result = a .sum (level = 0 )
1937
1939
assert_series_equal (result , expected )
1938
1940
1939
- def test_level_preserve_order (self ):
1940
- grouped = self .mframe .groupby (level = 0 )
1941
- exp_labels = np .array ([0 , 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 , 3 ], np .intp )
1941
+ @pytest .mark .parametrize ('sort,labels' , [
1942
+ [True , [2 , 2 , 2 , 0 , 0 , 1 , 1 , 3 , 3 , 3 ]],
1943
+ [False , [0 , 0 , 0 , 1 , 1 , 2 , 2 , 3 , 3 , 3 ]]
1944
+ ])
1945
+ def test_level_preserve_order (self , sort , labels ):
1946
+ grouped = self .mframe .groupby (level = 0 , sort = sort )
1947
+ exp_labels = np .array (labels , np .intp )
1942
1948
assert_almost_equal (grouped .grouper .labels [0 ], exp_labels )
1943
1949
1944
1950
def test_grouping_labels (self ):
0 commit comments