@@ -187,7 +187,7 @@ def convert_label_indexer(index, label, index_name='', method=None,
187
187
188
188
elif is_dict_like (label ):
189
189
if not isinstance (index , pd .MultiIndex ):
190
- raise ValueError ('cannot use a dict-like object for selection on a'
190
+ raise ValueError ('cannot use a dict-like object for selection on a '
191
191
'dimension that does not have a MultiIndex' )
192
192
indexer , new_index = index .get_loc_level (tuple (label .values ()),
193
193
level = tuple (label .keys ()))
@@ -219,7 +219,17 @@ def remap_label_indexers(data_obj, indexers, method=None, tolerance=None):
219
219
220
220
pos_indexers , new_indexes = {}, {}
221
221
for dim , label in iteritems (indexers ):
222
- idxr , new_idx = convert_label_indexer (data_obj [dim ].to_index (), label ,
222
+ index = data_obj [dim ].to_index ()
223
+
224
+ if isinstance (index , pd .MultiIndex ):
225
+ # set default names for multi-index unnamed levels so that
226
+ # we can safely rename dimension / coordinate later
227
+ valid_level_names = [name or '{}_level_{}' .format (dim , i )
228
+ for i , name in enumerate (index .names )]
229
+ index = index .copy ()
230
+ index .names = valid_level_names
231
+
232
+ idxr , new_idx = convert_label_indexer (index , label ,
223
233
dim , method , tolerance )
224
234
pos_indexers [dim ] = idxr
225
235
if new_idx is not None and not isinstance (new_idx , pd .MultiIndex ):
0 commit comments