xarray icon indicating copy to clipboard operation
xarray copied to clipboard

Add Coordinates `set_xindex()` and `drop_indexes()` methods

Open benbovy opened this issue 2 years ago • 2 comments

  • Complements #8102
  • [ ] Tests added
  • [ ] User visible changes (including notable bug fixes) are documented in whats-new.rst
  • [ ] New functions/methods are listed in api.rst

I don't think that we need to copy most API from Dataset / DataArray to Coordinates, but I find it convenient to have some relevant methods there too. For example, building Coordinates from scratch (with custom indexes) before passing the whole coords + indexes bundle around:

import dask.array as da
import numpy as np
import xarray as xr

coords = (
    xr.Coordinates(
        coords={"x": da.arange(100_000_000), "y": np.arange(100)},
        indexes={},
    )
    .set_xindex("x", DaskIndex)
    .set_xindex("y", xr.indexes.PandasIndex)
)

ds = xr.Dataset(coords=coords)

# <xarray.Dataset>
# Dimensions:  (x: 100000000, y: 100)
# Coordinates:
#   * x        (x) int64 dask.array<chunksize=(16777216,), meta=np.ndarray>
#   * y        (y) int64 0 1 2 3 4 5 6 7 8 9 10 ... 90 91 92 93 94 95 96 97 98 99
# Data variables:
#     *empty*
# Indexes:
#     x        DaskIndex

benbovy avatar Aug 28 '23 14:08 benbovy

@benbovy shall we merge?

dcherian avatar Aug 13 '25 03:08 dcherian

@benbovy shall we merge?

dcherian avatar Dec 04 '25 19:12 dcherian