@@ -3020,43 +3020,33 @@ def _maybe_casted_values(index, labels=None):
3020
3020
new_index = self .index .droplevel (level )
3021
3021
3022
3022
if not drop :
3023
- names = self .index .names
3024
- zipped = lzip (self .index .levels , self .index .labels )
3025
-
3026
- multi_col = isinstance (self .columns , MultiIndex )
3027
- for i , (lev , lab ) in reversed (list (enumerate (zipped ))):
3028
- col_name = names [i ]
3029
- if col_name is None :
3030
- col_name = 'level_%d' % i
3031
-
3032
- if multi_col :
3033
- if col_fill is None :
3034
- col_name = tuple ([col_name ] * self .columns .nlevels )
3035
- else :
3036
- name_lst = [col_fill ] * self .columns .nlevels
3037
- lev_num = self .columns ._get_level_number (col_level )
3038
- name_lst [lev_num ] = col_name
3039
- col_name = tuple (name_lst )
3040
-
3041
- # to ndarray and maybe infer different dtype
3042
- level_values = _maybe_casted_values (lev , lab )
3043
- if level is None or i in level :
3044
- new_obj .insert (0 , col_name , level_values )
3023
+ names = [n if n is not None else ('level_%d' % i )
3024
+ for (i , n ) in enumerate (self .index .names )]
3025
+ to_insert = lzip (self .index .levels , self .index .labels )
3045
3026
3046
3027
elif not drop :
3047
- name = self .index .name
3048
- if name is None or name == 'index' :
3049
- name = 'index' if 'index' not in self else 'level_0'
3050
- if isinstance (self .columns , MultiIndex ):
3051
- if col_fill is None :
3052
- name = tuple ([name ] * self .columns .nlevels )
3053
- else :
3054
- name_lst = [col_fill ] * self .columns .nlevels
3055
- lev_num = self .columns ._get_level_number (col_level )
3056
- name_lst [lev_num ] = name
3057
- name = tuple (name_lst )
3058
- values = _maybe_casted_values (self .index )
3059
- new_obj .insert (0 , name , values )
3028
+ default = 'index' if 'index' not in self else 'level_0'
3029
+ names = [default ] if self .index .name is None else [self .index .name ]
3030
+ to_insert = ((self .index , None ),)
3031
+
3032
+ if not drop :
3033
+ multi_col = isinstance (self .columns , MultiIndex )
3034
+ for i , (lev , lab ) in reversed (list (enumerate (to_insert ))):
3035
+ col_name = names [i ]
3036
+
3037
+ if multi_col :
3038
+ if col_fill is None :
3039
+ col_name = tuple ([col_name ] * self .columns .nlevels )
3040
+ else :
3041
+ name_lst = [col_fill ] * self .columns .nlevels
3042
+ lev_num = self .columns ._get_level_number (col_level )
3043
+ name_lst [lev_num ] = col_name
3044
+ col_name = tuple (name_lst )
3045
+
3046
+ # to ndarray and maybe infer different dtype
3047
+ level_values = _maybe_casted_values (lev , lab )
3048
+ if level is None or i in level :
3049
+ new_obj .insert (0 , col_name , level_values )
3060
3050
3061
3051
new_obj .index = new_index
3062
3052
if not inplace :
0 commit comments