@@ -106,7 +106,8 @@ def test_xs_keep_level(self):
106
106
expected = df [:1 ]
107
107
tm .assert_frame_equal (result , expected )
108
108
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 )
110
111
tm .assert_frame_equal (result , expected )
111
112
112
113
def test_xs_view (self , using_array_manager ):
@@ -187,7 +188,11 @@ def test_xs_with_duplicates(self, key, level, multiindex_dataframe_random_data):
187
188
assert df .index .is_unique is False
188
189
expected = concat ([frame .xs ("one" , level = "second" )] * 2 )
189
190
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 )
191
196
tm .assert_frame_equal (result , expected )
192
197
193
198
def test_xs_missing_values_in_index (self ):
@@ -358,3 +363,11 @@ def test_xs_droplevel_false_view(self, using_array_manager):
358
363
df .iloc [0 , 0 ] = 2
359
364
expected = DataFrame ({"a" : [1 ]})
360
365
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