We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 704cdbf commit 33728deCopy full SHA for 33728de
pandas/core/reshape.py
@@ -771,6 +771,8 @@ def melt(frame, id_vars=None, value_vars=None, var_name=None,
771
if value_vars is not None:
772
if not isinstance(value_vars, (tuple, list, np.ndarray)):
773
value_vars = [value_vars]
774
+ else:
775
+ value_vars = list(value_vars)
776
frame = frame.loc[:, id_vars + value_vars]
777
else:
778
frame = frame.copy()
pandas/tests/test_reshape.py
@@ -56,6 +56,20 @@ def test_value_vars(self):
56
columns=['id1', 'id2', 'variable', 'value'])
57
tm.assert_frame_equal(result4, expected4)
58
59
+ def test_value_vars_types(self):
60
+ result_with_tuple = melt(self.df, id_vars=['id1', 'id2'], value_vars=('A', 'B'))
61
+ result_with_array = melt(self.df, id_vars=['id1', 'id2'], value_vars=np.array(['A', 'B']))
62
+
63
+ expected = DataFrame({'id1': self.df['id1'].tolist() * 2,
64
+ 'id2': self.df['id2'].tolist() * 2,
65
+ 'variable': ['A'] * 10 + ['B'] * 10,
66
+ 'value': (self.df['A'].tolist() +
67
+ self.df['B'].tolist())},
68
+ columns=['id1', 'id2', 'variable', 'value'])
69
70
+ tm.assert_frame_equal(result_with_tuple, expected)
71
+ tm.assert_frame_equal(result_with_array, expected)
72
73
def test_custom_var_name(self):
74
result5 = melt(self.df, var_name=self.var_name)
75
self.assertEqual(result5.columns.tolist(), ['var', 'value'])
0 commit comments