Skip to content

Support for attributes with different dtypes when serialising to netcdf4 #1500

Open
@lewisacidic

Description

@lewisacidic

At the moment, bool and dates aren't supported as attributes when serializing to netcdf4:

>>> da = xr.DataArray(range(5), attrs={'test': True})
>>> da 
<xarray.DataArray (dim_0: 5)>
array([0, 1, 2, 3, 4])
Dimensions without coordinates: dim_0
Attributes:
    test:     True

>>> da.to_netcdf('test_bool.nc')
...
TypeError: illegal data type for attribute, must be one of dict_keys(['S1', 'i1', 'u1', 'i2', 'u2', 'i4', 'u4', 'i8', 'u8', 'f4', 'f8']), got b1

>>> da = xr.DataArray(range(5), attrs={'test': pd.to_datetime('now')})
>>> da
<xarray.DataArray (dim_0: 5)>
array([0, 1, 2, 3, 4])
Dimensions without coordinates: dim_0
Attributes:
    test:     2017-08-03 13:02:29

>>> da.to_netcdf('test_dt.nc')
...
TypeError: Invalid value for attr: 2017-08-03 13:02:29 must be a number string, ndarray or a list/tuple of numbers/strings for serialization to netCDF files

I assume bool attributes aren't supported by netcdf4-python and dates are difficult (could always just write these as a string), but this would be really nice to have if possible.

As an aside, using h5netcdf works for bools, but coerces them to int64.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions