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/pull/7182#issuecomment-1283038653,https://api.github.com/repos/pydata/xarray/issues/7182,1283038653,IC_kwDOAMm_X85MeZ29,4160723,2022-10-18T21:40:49Z,2022-10-18T21:40:49Z,MEMBER,"> I wonder if it is possible to create a generic MultiIndex? Hmm that could be possible but it think there are just too many possible edge cases for something generic like that. In your specific example ```python ds.set_xindex( [""a"", ""b""], MultiIndex([(""a"", PandasIndex), (""b"", PandasIndex), ([""a"", ""b""], BallTreeIndex)), ) ``` we could probably use the BallTreeIndex for point-wise indexing (i.e., with `ds.sel(a=xr.DataArray(...), b=xr.DataArray(...))`) and use the two PandasIndex instances for other kinds of selection (e.g., with slices, scalars, etc.) so there's no conflict, but I doubt this would be what we want in other cases. I guess your suggestion is a way around the constraint in the Xarray data model that a coordinate cannot have multiple indexes? I'm afraid there's no easy solution that is generic enough. Maybe some cache to avoid rebuilding the indexes? I.e., `.set_xindex()` doesn't drop the pre-existing index(es) but rather disable them so that it is possible to re-enable them later with another `.set_xindex()` call (`.xindexes` only returns the ""active"" indexes but there may be other ""inactive"" indexes attached to a dataset).","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1412901282