@@ -955,19 +955,21 @@ def test_get_level_values(self):
955955 exp = CategoricalIndex ([1 , 2 , 3 , 1 , 2 , 3 ])
956956 tm .assert_index_equal (index .get_level_values (1 ), exp )
957957
958- def test_get_level_values_na (self ):
958+ @pytest .mark .xfail (reason = 'GH 17924 (returns Int64Index with float data)' )
959+ def test_get_level_values_int_with_na (self ):
959960 arrays = [['a' , 'b' , 'b' ], [1 , np .nan , 2 ]]
960961 index = pd .MultiIndex .from_arrays (arrays )
961- values = index .get_level_values (1 )
962- expected = np . array ([1 , np .nan , 2 ])
963- tm .assert_numpy_array_equal ( values . values . astype ( float ) , expected )
962+ result = index .get_level_values (1 )
963+ expected = Index ([1 , np .nan , 2 ])
964+ tm .assert_index_equal ( result , expected )
964965
965966 arrays = [['a' , 'b' , 'b' ], [np .nan , np .nan , 2 ]]
966967 index = pd .MultiIndex .from_arrays (arrays )
967- values = index .get_level_values (1 )
968- expected = np . array ([np .nan , np .nan , 2 ])
969- tm .assert_numpy_array_equal ( values . values . astype ( float ) , expected )
968+ result = index .get_level_values (1 )
969+ expected = Index ([np .nan , np .nan , 2 ])
970+ tm .assert_index_equal ( result , expected )
970971
972+ def test_get_level_values_na (self ):
971973 arrays = [[np .nan , np .nan , np .nan ], ['a' , np .nan , 1 ]]
972974 index = pd .MultiIndex .from_arrays (arrays )
973975 result = index .get_level_values (0 )
@@ -982,7 +984,7 @@ def test_get_level_values_na(self):
982984 index = pd .MultiIndex .from_arrays (arrays )
983985 values = index .get_level_values (1 )
984986 expected = pd .DatetimeIndex ([0 , 1 , pd .NaT ])
985- tm .assert_numpy_array_equal (values . values , expected . values )
987+ tm .assert_index_equal (values , expected )
986988
987989 arrays = [[], []]
988990 index = pd .MultiIndex .from_arrays (arrays )
@@ -2269,6 +2271,20 @@ def test_unique(self):
22692271 exp = pd .MultiIndex .from_arrays ([['a' ], ['a' ]])
22702272 tm .assert_index_equal (res , exp )
22712273
2274+ @pytest .mark .parametrize ('level' , [0 , 'first' , 1 , 'second' ])
2275+ def test_unique_level (self , level ):
2276+ # GH #17896 - with level= argument
2277+ result = self .index .unique (level = level )
2278+ expected = self .index .get_level_values (level ).unique ()
2279+ tm .assert_index_equal (result , expected )
2280+
2281+ # With already unique level
2282+ mi = pd .MultiIndex .from_arrays ([[1 , 3 , 2 , 4 ], [1 , 3 , 2 , 5 ]],
2283+ names = ['first' , 'second' ])
2284+ result = mi .unique (level = level )
2285+ expected = mi .get_level_values (level )
2286+ tm .assert_index_equal (result , expected )
2287+
22722288 def test_unique_datetimelike (self ):
22732289 idx1 = pd .DatetimeIndex (['2015-01-01' , '2015-01-01' , '2015-01-01' ,
22742290 '2015-01-01' , 'NaT' , 'NaT' ])
0 commit comments