Skip to content

Commit 116c6b4

Browse files
committed
Fixing melt() when col_level>0 in a multi-index column
1 parent e8f206d commit 116c6b4

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

pandas/core/reshape/melt.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@
2424
other='DataFrame.melt'))
2525
def melt(frame, id_vars=None, value_vars=None, var_name=None,
2626
value_name='value', col_level=None):
27+
if col_level is not None: # allow list or other?
28+
frame = frame.copy()
29+
frame.columns = frame.columns.get_level_values(col_level)
30+
2731
# TODO: what about the existing index?
2832
if id_vars is not None:
2933
if not is_list_like(id_vars):
@@ -47,13 +51,9 @@ def melt(frame, id_vars=None, value_vars=None, var_name=None,
4751
else:
4852
value_vars = list(value_vars)
4953
frame = frame.loc[:, id_vars + value_vars]
50-
else:
54+
elif col_level is None: # avoid making copy if possible
5155
frame = frame.copy()
5256

53-
if col_level is not None: # allow list or other?
54-
# frame is a copy
55-
frame.columns = frame.columns.get_level_values(col_level)
56-
5757
if var_name is None:
5858
if isinstance(frame.columns, ABCMultiIndex):
5959
if len(frame.columns.names) == len(set(frame.columns.names)):

0 commit comments

Comments
 (0)