@@ -11423,6 +11423,31 @@ def test_query_with_partially_named_multiindex(self):
11423
11423
for parser , engine in product (['pandas' ], ENGINES ):
11424
11424
yield self .check_query_with_partially_named_multiindex , parser , engine
11425
11425
11426
+ def test_query_multiindex_get_index_resolvers (self ):
11427
+ for parser , engine in product (['pandas' ], ENGINES ):
11428
+ yield self .check_query_multiindex_get_index_resolvers , parser , engine
11429
+
11430
+ def check_query_multiindex_get_index_resolvers (self , parser , engine ):
11431
+ df = mkdf (10 , 3 , r_idx_nlevels = 2 , r_idx_names = ['spam' , 'eggs' ])
11432
+ resolvers = df ._get_index_resolvers ('index' )
11433
+ resolvers .update (df ._get_index_resolvers ('columns' ))
11434
+
11435
+ expected = {'index' : df .index ,
11436
+ 'columns' : Series (df .columns , index = df .columns ,
11437
+ name = df .columns .name ),
11438
+ 'spam' : Series (df .index .get_level_values ('spam' ),
11439
+ name = 'spam' , index = df .index ),
11440
+ 'eggs' : Series (df .index .get_level_values ('eggs' ),
11441
+ name = 'eggs' , index = df .index ),
11442
+ 'C0' : Series (df .columns , index = df .columns ,
11443
+ name = df .columns .name )}
11444
+ for k , v in resolvers .items ():
11445
+ if isinstance (v , Index ):
11446
+ assert v .is_ (expected [k ])
11447
+ elif isinstance (v , Series ):
11448
+ tm .assert_series_equal (v , expected [k ])
11449
+ else :
11450
+ raise AssertionError ("object must be a Series or Index" )
11426
11451
11427
11452
class TestDataFrameQueryNumExprPandas (unittest .TestCase ):
11428
11453
@classmethod
0 commit comments