html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue
https://github.com/pydata/xarray/issues/2460#issuecomment-427615001,https://api.github.com/repos/pydata/xarray/issues/2460,427615001,MDEyOklzc3VlQ29tbWVudDQyNzYxNTAwMQ==,5635139,2018-10-07T00:02:53Z,2018-10-08T19:32:18Z,MEMBER,"I'm writing something up for the docs. But I'm spinning once again.
~Did that example only work because the coords were ints that are being used as index positions?~
Edit: this approach works with a superset of labels, but not a subset
For example:
```python
In [48]: da = xr.DataArray(np.arange(4), dims=['y'],
...: coords={'y': list('abcd')})
In [49]: da
Out[49]:
array([0, 1, 2, 3])
Coordinates:
* y (y)
array([0, 1, 2, 3, 4, 5])
Coordinates:
y (a) in
----> 1 da2.sel(a=da.y)
/usr/local/lib/python3.7/site-packages/xarray/core/dataarray.py in sel(self, indexers, method, tolerance, drop, **indexers_kwargs)
845 ds = self._to_temp_dataset().sel(
846 indexers=indexers, drop=drop, method=method, tolerance=tolerance,
--> 847 **indexers_kwargs)
848 return self._from_temp_dataset(ds)
849
/usr/local/lib/python3.7/site-packages/xarray/core/dataset.py in sel(self, indexers, method, tolerance, drop, **indexers_kwargs)
1620 pos_indexers, new_indexes = remap_label_indexers(
1621 self, indexers=indexers, method=method, tolerance=tolerance)
-> 1622 result = self.isel(indexers=pos_indexers, drop=drop)
1623 return result._replace_indexes(new_indexes)
1624
/usr/local/lib/python3.7/site-packages/xarray/core/dataset.py in isel(self, indexers, drop, **indexers_kwargs)
1537 for name, var in iteritems(self._variables):
1538 var_indexers = {k: v for k, v in indexers_list if k in var.dims}
-> 1539 new_var = var.isel(indexers=var_indexers)
1540 if not (drop and name in var_indexers):
1541 variables[name] = new_var
/usr/local/lib/python3.7/site-packages/xarray/core/variable.py in isel(self, indexers, drop, **indexers_kwargs)
905 if dim in indexers:
906 key[i] = indexers[dim]
--> 907 return self[tuple(key)]
908
909 def squeeze(self, dim=None):
/usr/local/lib/python3.7/site-packages/xarray/core/variable.py in __getitem__(self, key)
614 array `x.values` directly.
615 """"""
--> 616 dims, indexer, new_order = self._broadcast_indexes(key)
617 data = as_indexable(self._data)[indexer]
618 if new_order:
/usr/local/lib/python3.7/site-packages/xarray/core/variable.py in _broadcast_indexes(self, key)
485 dims.append(d)
486 if len(set(dims)) == len(dims):
--> 487 return self._broadcast_indexes_outer(key)
488
489 return self._broadcast_indexes_vectorized(key)
/usr/local/lib/python3.7/site-packages/xarray/core/variable.py in _broadcast_indexes_outer(self, key)
537 new_key.append(k)
538
--> 539 return dims, OuterIndexer(tuple(new_key)), None
540
541 def _nonzero(self):
/usr/local/lib/python3.7/site-packages/xarray/core/indexing.py in __init__(self, key)
376 if not np.issubdtype(k.dtype, np.integer):
377 raise TypeError('invalid indexer array, does not have '
--> 378 'integer dtype: {!r}'.format(k))
379 if k.ndim != 1:
380 raise TypeError('invalid indexer array for {}, must have '
TypeError: invalid indexer array, does not have integer dtype: array(['a', 'b', 'c', 'd'], dtype='