Description
What happened?
When concatenating two objects with xr.concat
along a new dimension given through a DataArray
, the attributes of this given coordinate are lost in the concatenation.
What did you expect to happen?
I expected the concatenation coordinate to be identical to the 1D DataArray I gave to concat
.
Minimal Complete Verifiable Example
import xarray as xr
ds = xr.tutorial.open_dataset("air_temperature")
concat_dim = xr.DataArray([1, 2], dims=("condim",), attrs={"an_attr": "yep"}, name="condim")
out = xr.concat([ds, ds], concat_dim)
out.condim.attrs
Before #5692, I get:
{'an_attr': 'yep'}
with the current master, I get:
{}
Anything else we need to know?
I'm not 100% sure, but I think the change is due to xr.core.concat._calc_concat_dim_coord
being replaced by xr.core.concat.__calc_concat_dim_index
. The former didn't touch the concatenation coordinate, while the latter casts it as an index, thus dropping the attributes in the process.
If the solution is to add a check in xr.concat
, I may have time to implement something simple.
Environment
INSTALLED VERSIONS
commit: None
python: 3.9.6 | packaged by conda-forge | (default, Jul 11 2021, 03:39:48)
[GCC 9.3.0]
python-bits: 64
OS: Linux
OS-release: 5.16.13-arch1-1
machine: x86_64
processor:
byteorder: little
LC_ALL: None
LANG: fr_CA.utf8
LOCALE: ('fr_CA', 'UTF-8')
libhdf5: 1.12.0
libnetcdf: 4.7.4
xarray: 2022.3.1.dev16+g3ead17ea
pandas: 1.4.0
numpy: 1.20.3
scipy: 1.7.1
netCDF4: 1.5.7
pydap: None
h5netcdf: 0.11.0
h5py: 3.4.0
Nio: None
zarr: 2.10.0
cftime: 1.5.0
nc_time_axis: 1.3.1
PseudoNetCDF: None
rasterio: None
cfgrib: None
iris: None
bottleneck: 1.3.2
dask: 2021.08.0
distributed: 2021.08.0
matplotlib: 3.4.3
cartopy: None
seaborn: None
numbagg: None
fsspec: 2021.07.0
cupy: None
pint: 0.18
sparse: None
setuptools: 57.4.0
pip: 21.2.4
conda: None
pytest: 6.2.5
IPython: 8.0.1
sphinx: 4.1.2