Skip to content

Error saving xr.Dataset with timezone aware time index to netcdf format. #3320

Description

@fjanoos

When I try to save a xr.Dataset that was created from a pandas dataframe with tz-aware time index ( see #3291) - xarray converts the time index into a int64 nanosecs

For example, this is what the converted dataset looks like:

<xarray.Dataset>
Dimensions:  (symbol: 3196, time: 4977)
Coordinates:
  * time     (time) object 946933200000000000 ... 1566334800000000000
  * symbol   (symbol) int64 0 1 2 3 4 5 6 ... 3189 3190 3191 3192 3193 3194 3195
Data variables:
    var_0    (time, symbol) float32 nan 4301510000.0 nan nan ... nan nan nan nan
    var_1    (time, symbol) object nan False nan nan nan ... nan nan nan nan nan
    var_2    (time, symbol) float32 nan 475.0 nan nan nan ... nan nan nan nan
    var_3    (time, symbol) float32 nan 475.0 nan nan nan ... nan nan nan nan
    var_5    (time, symbol) float32 nan 475.9 nan nan nan ... nan nan nan nan
    var_6    (time, symbol) float32 nan 475.9 nan nan nan ... nan nan nan nan
    var_7    (time, symbol) float32 nan 429.5 nan nan nan ... nan nan nan nan
    var_8    (time, symbol) float32 nan 429.5 nan nan nan ... nan nan nan nan
    var_10   (time, symbol) float32 nan -0.06736842 nan nan ... nan nan nan nan
    var_11   (time, symbol) float32 nan 0.05085102 nan nan ... nan nan nan nan
    var_12   (time, symbol) float32 nan 0.029103609 nan nan ... nan nan nan nan
    var_13   (time, symbol) float32 nan 0.048769474 nan nan ... nan nan nan nan
    var_14   (time, symbol) float32 nan 442.9 nan nan nan ... nan nan nan nan
    var_15   (time, symbol) float32 nan 442.9 nan nan nan ... nan nan nan nan
    var_16   (time, symbol) float32 nan nan nan nan nan ... nan nan nan nan nan
    var_17   (time, symbol) float32 nan nan nan nan nan ... nan nan nan nan nan
    var_18   (time, symbol) float32 nan nan nan nan nan ... nan nan nan nan nan
    var_19   (time, symbol) float32 nan nan nan nan nan ... nan nan nan nan nan
    var_20   (time, symbol) float32 nan nan nan nan nan ... nan nan nan nan nan
    var_21   (time, symbol) float32 nan 9501900.0 nan nan ... nan nan nan nan
    var_22   (time, symbol) float32 nan 9501900.0 nan nan ... nan nan nan nan

Now when I try to save this dataset using

pds.to_netcdf( ... )

I get the following error:
image

Dropping into pdb when this error is hit - it looks like the problem is with the time index.

image

After converting the time index into a regular int index by:

pds = pds.assign_coords(time=np.arange( len( pds.time )) )
pds.to_netcdf( ... )

this works OK.

And this also works !!

pds = pds.assign_coords(time=pd.to_datetime( pds.time ) )
pds.to_netcdf( ... )

Note pd.to_datetime(pds.time) drops the timezone from the index - so the issue is very much about saving tz-aware time indices.

Any ideas on what I can do about this ?

Thanks!
-firdaus

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions