@@ -70,23 +70,30 @@ 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 ):
73
+ def test_vars_work_with_multiindex (self ):
74
74
expected = DataFrame ({
75
75
('A' , 'a' ): self .df1 [('A' , 'a' )],
76
76
'CAP' : ['B' ] * len (self .df1 ),
77
77
'low' : ['b' ] * len (self .df1 ),
78
78
'value' : self .df1 [('B' , 'b' )],
79
79
}, columns = [('A' , 'a' ), 'CAP' , 'low' , 'value' ])
80
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 (ValueError , r'MultiIndex' ):
89
- melt (self .df1 , id_vars = id_vars , value_vars = value_vars )
81
+ result = melt (self .df1 , id_vars = [('A' , 'a' )], value_vars = [('B' , 'b' )])
82
+ tm .assert_frame_equal (result , expected )
83
+
84
+ def test_tuple_vars_fail_with_multiindex (self ):
85
+ # melt should fail with an informative error message if
86
+ # the columns have a MultiIndex and a tuple is passed
87
+ # for id_vars or value_vars.
88
+ tuple_a = ('A' , 'a' )
89
+ list_a = [tuple_a ]
90
+ tuple_b = ('B' , 'b' )
91
+ list_b = [tuple_b ]
92
+
93
+ for id_vars , value_vars in ((tuple_a , list_b ), (list_a , tuple_b ),
94
+ (tuple_a , tuple_b )):
95
+ with self .assertRaisesRegex (ValueError , r'MultiIndex' ):
96
+ melt (self .df1 , id_vars = id_vars , value_vars = value_vars )
90
97
91
98
def test_custom_var_name (self ):
92
99
result5 = melt (self .df , var_name = self .var_name )
0 commit comments