@@ -963,19 +963,21 @@ def test_get_level_values(self):
963963 exp = CategoricalIndex ([1 , 2 , 3 , 1 , 2 , 3 ])
964964 tm .assert_index_equal (index .get_level_values (1 ), exp )
965965
966- def test_get_level_values_na (self ):
966+ @pytest .mark .xfail (reason = 'GH 17924 (returns Int64Index with float data)' )
967+ def test_get_level_values_int_with_na (self ):
967968 arrays = [['a' , 'b' , 'b' ], [1 , np .nan , 2 ]]
968969 index = pd .MultiIndex .from_arrays (arrays )
969- values = index .get_level_values (1 )
970- expected = np . array ([1 , np .nan , 2 ])
971- tm .assert_numpy_array_equal ( values . values . astype ( float ) , expected )
970+ result = index .get_level_values (1 )
971+ expected = Index ([1 , np .nan , 2 ])
972+ tm .assert_index_equal ( result , expected )
972973
973974 arrays = [['a' , 'b' , 'b' ], [np .nan , np .nan , 2 ]]
974975 index = pd .MultiIndex .from_arrays (arrays )
975- values = index .get_level_values (1 )
976- expected = np . array ([np .nan , np .nan , 2 ])
977- tm .assert_numpy_array_equal ( values . values . astype ( float ) , expected )
976+ result = index .get_level_values (1 )
977+ expected = Index ([np .nan , np .nan , 2 ])
978+ tm .assert_index_equal ( result , expected )
978979
980+ def test_get_level_values_na (self ):
979981 arrays = [[np .nan , np .nan , np .nan ], ['a' , np .nan , 1 ]]
980982 index = pd .MultiIndex .from_arrays (arrays )
981983 result = index .get_level_values (0 )
@@ -990,7 +992,7 @@ def test_get_level_values_na(self):
990992 index = pd .MultiIndex .from_arrays (arrays )
991993 values = index .get_level_values (1 )
992994 expected = pd .DatetimeIndex ([0 , 1 , pd .NaT ])
993- tm .assert_numpy_array_equal (values . values , expected . values )
995+ tm .assert_index_equal (values , expected )
994996
995997 arrays = [[], []]
996998 index = pd .MultiIndex .from_arrays (arrays )
@@ -2277,6 +2279,20 @@ def test_unique(self):
22772279 exp = pd .MultiIndex .from_arrays ([['a' ], ['a' ]])
22782280 tm .assert_index_equal (res , exp )
22792281
2282+ @pytest .mark .parametrize ('level' , [0 , 'first' , 1 , 'second' ])
2283+ def test_unique_level (self , level ):
2284+ # GH #17896 - with level= argument
2285+ result = self .index .unique (level = level )
2286+ expected = self .index .get_level_values (level ).unique ()
2287+ tm .assert_index_equal (result , expected )
2288+
2289+ # With already unique level
2290+ mi = pd .MultiIndex .from_arrays ([[1 , 3 , 2 , 4 ], [1 , 3 , 2 , 5 ]],
2291+ names = ['first' , 'second' ])
2292+ result = mi .unique (level = level )
2293+ expected = mi .get_level_values (level )
2294+ tm .assert_index_equal (result , expected )
2295+
22802296 def test_unique_datetimelike (self ):
22812297 idx1 = pd .DatetimeIndex (['2015-01-01' , '2015-01-01' , '2015-01-01' ,
22822298 '2015-01-01' , 'NaT' , 'NaT' ])
0 commit comments