@@ -2489,17 +2489,18 @@ def _maybe_cast(values):
2489
2489
return values
2490
2490
2491
2491
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 :
2494
2501
names = self .index .names
2495
2502
zipped = zip (self .index .levels , self .index .labels )
2496
2503
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
-
2503
2504
for i , (lev , lab ) in reversed (list (enumerate (zipped ))):
2504
2505
col_name = names [i ]
2505
2506
if col_name is None :
@@ -2510,13 +2511,12 @@ def _maybe_cast(values):
2510
2511
if level is None or i in level :
2511
2512
new_obj .insert (0 , col_name , level_values .take (lab ))
2512
2513
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
+
2520
2520
new_obj .index = new_index
2521
2521
return new_obj
2522
2522
0 commit comments