@@ -2489,17 +2489,18 @@ def _maybe_cast(values):
24892489 return values
24902490
24912491 new_index = np .arange (len (new_obj ))
2492- if not drop :
2493- if isinstance (self .index , MultiIndex ):
2492+ if isinstance (self .index , MultiIndex ):
2493+ if level is not None :
2494+ if not isinstance (level , (tuple , list )):
2495+ level = [level ]
2496+ level = [self .index ._get_level_number (lev ) for lev in level ]
2497+ if len (level ) < len (self .index .levels ):
2498+ new_index = self .index .droplevel (level )
2499+
2500+ if not drop :
24942501 names = self .index .names
24952502 zipped = zip (self .index .levels , self .index .labels )
24962503
2497- if level is not None :
2498- if not isinstance (level , (tuple , list )):
2499- level = [level ]
2500-
2501- level = [self .index ._get_level_number (lev ) for lev in level ]
2502-
25032504 for i , (lev , lab ) in reversed (list (enumerate (zipped ))):
25042505 col_name = names [i ]
25052506 if col_name is None :
@@ -2510,13 +2511,12 @@ def _maybe_cast(values):
25102511 if level is None or i in level :
25112512 new_obj .insert (0 , col_name , level_values .take (lab ))
25122513
2513- if level is not None and len (level ) < len (self .index .levels ):
2514- new_index = self .index .droplevel (level )
2515- else :
2516- name = self .index .name
2517- if name is None or name == 'index' :
2518- name = 'index' if 'index' not in self else 'level_0'
2519- new_obj .insert (0 , name , _maybe_cast (self .index .values ))
2514+ elif not drop :
2515+ name = self .index .name
2516+ if name is None or name == 'index' :
2517+ name = 'index' if 'index' not in self else 'level_0'
2518+ new_obj .insert (0 , name , _maybe_cast (self .index .values ))
2519+
25202520 new_obj .index = new_index
25212521 return new_obj
25222522
0 commit comments