Skip to content

reset_index does not keep attributes #4101

@OriolAbril

Description

@OriolAbril

If an indexing coordinate with attributes is converted to a non indexing coordinate with reset_index, the attributes are lost. I am not sure it is a bug, but I think they should keep the attributes and reset_coords does keep the attributes of reset coordinates.

MCVE Code Sample

temp = 15 + 8 * np.random.randn(2, 2, 3)
time = xr.DataArray(pd.date_range('2014-09-06', periods=3), dims=["time"]).assign_attrs({"attr": 23})
coord = xr.DataArray([[-99.83, -99.32], [-99.79, -99.23]], dims=["x", "y"]).assign_attrs({"coord": True})

ds = xr.Dataset(
    {
        'temperature': (['x', 'y', 'time'],  temp),
    },
    coords={
        'coord_0': coord,
        'time': time,
    }
)
ds
# both coord_0 and time have attributes

ds.reset_index("time")
# coordinate time_ does not have attributes anymore

ds.reset_coords("coord_0")
# data variable coord_0 still has attributes

Expected Output

I would expect attributes to be kept.

Possible solution

I was wondering if changing this line and this other line to

vars_to_create[str(d) + "_"] = Variable(d, index, variables[d].attrs)

could solve this. If so I'll send a PR whenever I can.

Versions

Output of xr.show_versions()

INSTALLED VERSIONS

commit: None
python: 3.6.9 (default, Apr 18 2020, 01:56:04)
[GCC 8.4.0]
python-bits: 64
OS: Linux
OS-release: 4.15.0-101-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8
libhdf5: 1.10.4
libnetcdf: 4.6.3

xarray: 0.15.1
pandas: 1.0.3
numpy: 1.18.4
scipy: 1.4.1
netCDF4: 1.5.3
pydap: None
h5netcdf: None
h5py: 2.10.0
Nio: None
zarr: None
cftime: 1.0.4.2
nc_time_axis: None
PseudoNetCDF: None
rasterio: None
cfgrib: None
iris: None
bottleneck: None
dask: None
distributed: None
matplotlib: 3.2.1
cartopy: None
seaborn: 0.10.1
numbagg: None
setuptools: 42.0.2
pip: 20.1.1
conda: None
pytest: 4.6.2
IPython: 7.14.0
sphinx: 2.0.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    topic-metadataRelating to the handling of metadata (i.e. attrs and encoding)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions