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/7250#issuecomment-1313866757,https://api.github.com/repos/pydata/xarray/issues/7250,1313866757,IC_kwDOAMm_X85OUAQF,4160723,2022-11-14T14:45:39Z,2022-11-14T14:45:39Z,MEMBER,"That's a bug in this method: https://github.com/pydata/xarray/blob/6f9e33e94944f247a5c5c5962a865ff98a654b30/xarray/core/indexing.py#L1528-L1532
Xarray array wrappers for pandas indexes keep track of the original dtype and should restore it when converted into numpy arrays. Something like this should work for the same method:
```python
def __array__(self, dtype: DTypeLike = None) -> np.ndarray:
if dtype is None:
dtype = self.dtype
if self.level is not None:
return np.asarray(
self.array.get_level_values(self.level).values, dtype=dtype
)
else:
return super().__array__(dtype)
```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1433998942
https://github.com/pydata/xarray/issues/7250#issuecomment-1302289476,https://api.github.com/repos/pydata/xarray/issues/7250,1302289476,IC_kwDOAMm_X85Nn1xE,3383837,2022-11-03T15:31:52Z,2022-11-03T15:31:52Z,CONTRIBUTOR,You're welcome! Please let me know if a PR (a first for me on xarray) would be welcome. A pointer to the relevant source would get me started.,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1433998942
https://github.com/pydata/xarray/issues/7250#issuecomment-1302258508,https://api.github.com/repos/pydata/xarray/issues/7250,1302258508,IC_kwDOAMm_X85NnuNM,2448579,2022-11-03T15:10:46Z,2022-11-03T15:10:46Z,MEMBER,"Ah very good find! Thanks.
maybe this can be fixed, or at least made more consistent. I think `.values` is pulling out of the pandas index (so is promoted) while we do actually have an underlying `int32` array.
``` python
>>> ds.stack(b=('a',))['a'].dtype #== ds.stack(b=('a',))['a'].values.dtype
dtype('int32')
>>> ds.stack(b=('a',))['a'].values.dtype
dtype('int64')
```
cc @benbovy ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1433998942
https://github.com/pydata/xarray/issues/7250#issuecomment-1302248046,https://api.github.com/repos/pydata/xarray/issues/7250,1302248046,IC_kwDOAMm_X85Nnrpu,3383837,2022-11-03T15:03:17Z,2022-11-03T15:04:10Z,CONTRIBUTOR,"Darn. Well, to help this be more transparent, I think it would be on XArray to sync the new `dtype` in the variable's attributes. Because I also currently get `False` for the following:
```
ds.stack(b=('a',))['a'].dtype == ds.stack(b=('a',))['a'].values.dtype
```
Thanks for looking into this issue!","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1433998942
https://github.com/pydata/xarray/issues/7250#issuecomment-1302239394,https://api.github.com/repos/pydata/xarray/issues/7250,1302239394,IC_kwDOAMm_X85Nnpii,2448579,2022-11-03T14:57:16Z,2022-11-03T14:57:34Z,MEMBER,"Unfortunately this is a pandas thing, so we can't fix it. Pandas only provides `Int64Index` so everything gets cast to that. Fixing that is on the roadmap for pandas 2.0 I think (See https://github.com/pandas-dev/pandas/pull/44819#issuecomment-999790361)","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1433998942