@@ -70,6 +70,24 @@ def test_value_vars_types(self):
70
70
value_vars = type_ (('A' , 'B' )))
71
71
tm .assert_frame_equal (result , expected )
72
72
73
+ def test_id_and_value_vars_types_with_multiindex (self ):
74
+ expected = DataFrame ({
75
+ ('A' , 'a' ): self .df1 [('A' , 'a' )],
76
+ 'CAP' : ['B' ] * len (self .df1 ),
77
+ 'low' : ['b' ] * len (self .df1 ),
78
+ 'value' : self .df1 [('B' , 'b' )],
79
+ }, columns = [('A' , 'a' ), 'CAP' , 'low' , 'value' ])
80
+
81
+ for id_vars in ([('A' , 'a' )], ('A' , 'a' )):
82
+ for value_vars in ([('B' , 'b' )], ('B' , 'b' )):
83
+ if isinstance (id_vars , list ) and isinstance (value_vars , list ):
84
+ result = melt (self .df1 , id_vars = id_vars ,
85
+ value_vars = value_vars )
86
+ tm .assert_frame_equal (result , expected )
87
+ else :
88
+ with self .assertRaisesRegex (TypeError , r'MultiIndex' ):
89
+ melt (self .df1 , id_vars = id_vars , value_vars = value_vars )
90
+
73
91
def test_custom_var_name (self ):
74
92
result5 = melt (self .df , var_name = self .var_name )
75
93
self .assertEqual (result5 .columns .tolist (), ['var' , 'value' ])
0 commit comments