@@ -1778,8 +1778,9 @@ def sel(self, indexers=None, method=None, tolerance=None, drop=False,
1778
1778
DataArray.sel
1779
1779
"""
1780
1780
indexers = either_dict_or_kwargs (indexers , indexers_kwargs , 'sel' )
1781
+ casted_indexers = self ._maybe_cast_floats (indexers )
1781
1782
pos_indexers , new_indexes = remap_label_indexers (
1782
- self , indexers = indexers , method = method , tolerance = tolerance )
1783
+ self , indexers = casted_indexers , method = method , tolerance = tolerance )
1783
1784
result = self .isel (indexers = pos_indexers , drop = drop )
1784
1785
return result ._overwrite_indexes (new_indexes )
1785
1786
@@ -2262,6 +2263,17 @@ def interp_like(self, other, method='linear', assume_sorted=False,
2262
2263
ds = self .reindex (object_coords )
2263
2264
return ds .interp (numeric_coords , method , assume_sorted , kwargs )
2264
2265
2266
+ # Helper method for sel()
2267
+ def _maybe_cast_floats (self , indexers ):
2268
+ """ Cast float labels passed to sel() method to the float
2269
+ types of the corresponding coordinates"""
2270
+ casted_indexers = indexers .copy ()
2271
+ for k , v in indexers .items ():
2272
+ if self .coords [k ].dtype .kind == 'f' :
2273
+ casting_type = getattr (self .coords [k ].dtype , "type" )
2274
+ casted_indexers [k ] = casting_type (indexers [k ])
2275
+ return casted_indexers
2276
+
2265
2277
# Helper methods for rename()
2266
2278
def _rename_vars (self , name_dict , dims_dict ):
2267
2279
variables = OrderedDict ()
0 commit comments