@@ -963,19 +963,21 @@ def test_get_level_values(self):
963
963
exp = CategoricalIndex ([1 , 2 , 3 , 1 , 2 , 3 ])
964
964
tm .assert_index_equal (index .get_level_values (1 ), exp )
965
965
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 ):
967
968
arrays = [['a' , 'b' , 'b' ], [1 , np .nan , 2 ]]
968
969
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 )
972
973
973
974
arrays = [['a' , 'b' , 'b' ], [np .nan , np .nan , 2 ]]
974
975
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 )
978
979
980
+ def test_get_level_values_na (self ):
979
981
arrays = [[np .nan , np .nan , np .nan ], ['a' , np .nan , 1 ]]
980
982
index = pd .MultiIndex .from_arrays (arrays )
981
983
result = index .get_level_values (0 )
@@ -990,7 +992,7 @@ def test_get_level_values_na(self):
990
992
index = pd .MultiIndex .from_arrays (arrays )
991
993
values = index .get_level_values (1 )
992
994
expected = pd .DatetimeIndex ([0 , 1 , pd .NaT ])
993
- tm .assert_numpy_array_equal (values . values , expected . values )
995
+ tm .assert_index_equal (values , expected )
994
996
995
997
arrays = [[], []]
996
998
index = pd .MultiIndex .from_arrays (arrays )
@@ -2277,6 +2279,20 @@ def test_unique(self):
2277
2279
exp = pd .MultiIndex .from_arrays ([['a' ], ['a' ]])
2278
2280
tm .assert_index_equal (res , exp )
2279
2281
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
+
2280
2296
def test_unique_datetimelike (self ):
2281
2297
idx1 = pd .DatetimeIndex (['2015-01-01' , '2015-01-01' , '2015-01-01' ,
2282
2298
'2015-01-01' , 'NaT' , 'NaT' ])
0 commit comments