@@ -2590,3 +2590,30 @@ def test_head_tail(self):
2590
2590
empty_df = DataFrame ()
2591
2591
assert_frame_equal (empty_df .tail (), empty_df )
2592
2592
assert_frame_equal (empty_df .head (), empty_df )
2593
+
2594
+ def test_type_error_multiindex (self ):
2595
+ # See gh-12218
2596
+ df = DataFrame (columns = ['i' , 'c' , 'x' , 'y' ],
2597
+ data = [[0 , 0 , 1 , 2 ], [1 , 0 , 3 , 4 ],
2598
+ [0 , 1 , 1 , 2 ], [1 , 1 , 3 , 4 ]])
2599
+ dg = df .pivot_table (index = 'i' , columns = 'c' ,
2600
+ values = ['x' , 'y' ])
2601
+
2602
+ with assertRaisesRegexp (TypeError , "is an invalid key" ):
2603
+ str (dg [:, 0 ])
2604
+
2605
+ index = Index (range (2 ), name = 'i' )
2606
+ columns = MultiIndex (levels = [['x' , 'y' ], [0 , 1 ]],
2607
+ labels = [[0 , 1 ], [0 , 0 ]],
2608
+ names = [None , 'c' ])
2609
+ expected = DataFrame ([[1 , 2 ], [3 , 4 ]], columns = columns , index = index )
2610
+
2611
+ result = dg .loc [:, (slice (None ), 0 )]
2612
+ assert_frame_equal (result , expected )
2613
+
2614
+ name = ('x' , 0 )
2615
+ index = Index (range (2 ), name = 'i' )
2616
+ expected = Series ([1 , 3 ], index = index , name = name )
2617
+
2618
+ result = dg ['x' , 0 ]
2619
+ assert_series_equal (result , expected )
0 commit comments