66from pandas import compat
77from pandas .core .categorical import Categorical
88
9- from pandas .core .frame import DataFrame
10- from pandas .core .index import MultiIndex
9+ from pandas .core .dtypes .generic import ABCMultiIndex
1110
1211from pandas .core .frame import _shared_docs
1312from pandas .util ._decorators import Appender
1413
1514import re
16- import pandas .core .dtypes .concat as _concat
1715from pandas .core .dtypes .missing import notna
1816
1917
@@ -27,7 +25,7 @@ def melt(frame, id_vars=None, value_vars=None, var_name=None,
2725 if id_vars is not None :
2826 if not is_list_like (id_vars ):
2927 id_vars = [id_vars ]
30- elif (isinstance (frame .columns , MultiIndex ) and
28+ elif (isinstance (frame .columns , ABCMultiIndex ) and
3129 not isinstance (id_vars , list )):
3230 raise ValueError ('id_vars must be a list of tuples when columns'
3331 ' are a MultiIndex' )
@@ -39,7 +37,7 @@ def melt(frame, id_vars=None, value_vars=None, var_name=None,
3937 if value_vars is not None :
4038 if not is_list_like (value_vars ):
4139 value_vars = [value_vars ]
42- elif (isinstance (frame .columns , MultiIndex ) and
40+ elif (isinstance (frame .columns , ABCMultiIndex ) and
4341 not isinstance (value_vars , list )):
4442 raise ValueError ('value_vars must be a list of tuples when'
4543 ' columns are a MultiIndex' )
@@ -54,7 +52,7 @@ def melt(frame, id_vars=None, value_vars=None, var_name=None,
5452 frame .columns = frame .columns .get_level_values (col_level )
5553
5654 if var_name is None :
57- if isinstance (frame .columns , MultiIndex ):
55+ if isinstance (frame .columns , ABCMultiIndex ):
5856 if len (frame .columns .names ) == len (set (frame .columns .names )):
5957 var_name = frame .columns .names
6058 else :
@@ -81,6 +79,7 @@ def melt(frame, id_vars=None, value_vars=None, var_name=None,
8179 mdata [col ] = np .asanyarray (frame .columns
8280 ._get_level_values (i )).repeat (N )
8381
82+ from pandas import DataFrame
8483 return DataFrame (mdata , columns = mcolumns )
8584
8685
@@ -137,6 +136,8 @@ def lreshape(data, groups, dropna=True, label=None):
137136
138137 for target , names in zip (keys , values ):
139138 to_concat = [data [col ].values for col in names ]
139+
140+ import pandas .core .dtypes .concat as _concat
140141 mdata [target ] = _concat ._concat_compat (to_concat )
141142 pivot_cols .append (target )
142143
@@ -150,6 +151,7 @@ def lreshape(data, groups, dropna=True, label=None):
150151 if not mask .all ():
151152 mdata = dict ((k , v [mask ]) for k , v in compat .iteritems (mdata ))
152153
154+ from pandas import DataFrame
153155 return DataFrame (mdata , columns = id_cols + pivot_cols )
154156
155157
0 commit comments