@@ -106,7 +106,8 @@ def test_xs_keep_level(self):
106106 expected = df [:1 ]
107107 tm .assert_frame_equal (result , expected )
108108
109- result = df .xs ([2008 , "sat" ], level = ["year" , "day" ], drop_level = False )
109+ with tm .assert_produces_warning (FutureWarning ):
110+ result = df .xs ([2008 , "sat" ], level = ["year" , "day" ], drop_level = False )
110111 tm .assert_frame_equal (result , expected )
111112
112113 def test_xs_view (self , using_array_manager ):
@@ -187,7 +188,11 @@ def test_xs_with_duplicates(self, key, level, multiindex_dataframe_random_data):
187188 assert df .index .is_unique is False
188189 expected = concat ([frame .xs ("one" , level = "second" )] * 2 )
189190
190- result = df .xs (key , level = level )
191+ if isinstance (key , list ):
192+ with tm .assert_produces_warning (FutureWarning ):
193+ result = df .xs (key , level = level )
194+ else :
195+ result = df .xs (key , level = level )
191196 tm .assert_frame_equal (result , expected )
192197
193198 def test_xs_missing_values_in_index (self ):
@@ -358,3 +363,11 @@ def test_xs_droplevel_false_view(self, using_array_manager):
358363 df .iloc [0 , 0 ] = 2
359364 expected = DataFrame ({"a" : [1 ]})
360365 tm .assert_frame_equal (result , expected )
366+
367+ def test_xs_list_indexer_droplevel_false (self ):
368+ # GH#41760
369+ mi = MultiIndex .from_tuples ([("x" , "m" , "a" ), ("x" , "n" , "b" ), ("y" , "o" , "c" )])
370+ df = DataFrame ([[1 , 2 , 3 ], [4 , 5 , 6 ]], columns = mi )
371+ with tm .assert_produces_warning (FutureWarning ):
372+ with pytest .raises (KeyError , match = "y" ):
373+ df .xs (["x" , "y" ], drop_level = False , axis = 1 )
0 commit comments