home / github / issue_comments

Menu
  • Search all tables
  • GraphQL API

issue_comments: 580935355

This data as json

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/3739#issuecomment-580935355 https://api.github.com/repos/pydata/xarray/issues/3739 580935355 MDEyOklzc3VlQ29tbWVudDU4MDkzNTM1NQ== 33062222 2020-01-31T22:17:34Z 2020-01-31T22:17:34Z NONE

Hi Ryan, thanks for your reply. Apologies for not creating a reproducible problem earlier as the files weren't created by xarray routine. Please find my attempt at reproducing the problem below:

Minimum steps to reproduce the error

```python import numpy as np import xarray as xr import pandas as pd

data1 = np.ones(shape=(1, 181, 360)) lats=np.arange(-90,91, 1) lons=np.arange(-180,180,1) time1 = np.array([0])

creating the first dataset

da_1 = xr.DataArray(data1, coords=[time1, lats, lons], dims=['time', 'lats', 'lons']) da_1.time.attrs['units'] = "hours since 1988-01-01 00:00:00" da_1.time.attrs['calendar'] = "proleptic_gregorian" da_1.time.attrs['standard_name'] = "time" ds_1 = xr.Dataset({'V':da_1}) ds_1.attrs['Conventions'] = 'CF' ds_1.to_netcdf('ds_1.nc', encoding=None)

creating second test dataset

time2=np.array([6]) # wrong time value da_2 = xr.DataArray(data1, coords=[time2, lats, lons], dims=['time', 'lats', 'lons']) da_2.time.attrs['units'] = "hours since 1988-01-01 06:00:00" da_2.time.attrs['calendar'] = "proleptic_gregorian" da_2.time.attrs['standard_name'] = "time"

ds_2 = xr.Dataset({'V':da_2}) ds_2.attrs['Conventions'] = 'CF'

saving it with wrong time value

ds_2.to_netcdf('ds_2.nc', encoding=None)

Reading the 2 files and concatenating them

files = ['/path/to/ds_1.nc', '/path/to/ds_2.nc']

ds_test = xr.open_mfdataset(files, combine='nested', concat_dim='time', decode_cf=False) yr = 1988 # year dates = pd.date_range(start=(yr), end=str(yr+1), freq='6H', closed='left') ds_test.time.values=dates[:2] # fixing the time values ds_test.time.attrs['units'] = "Seconds since 1970-01-01 00:00:00" #required encoding ds_test.to_netcdf('ds_1_2.nc') # gives the same error ```

ValueError: failed to prevent overwriting existing key units in attrs on variable 'time'. This is probably an encoding field used by xarray to describe how a variable is serialized. To proceed, remove this key from the variable's attributes manually.

I've also mentioned your suggestion earlier in the original post. It also gives the same error message Please find the following reproducible steps incorporating your suggestion.

Trying time encoding solution

```

Reading the files

files = ['/path/to/ds_1.nc', '/path/to/ds_2.nc']

ds_test = xr.open_mfdataset(files, combine='nested', concat_dim='time', decode_cf=False) yr = 1988 # year dates = pd.date_range(start=(yr), end=str(yr+1), freq='6H', closed='left') ds_test.time.values=dates[:2] # fixing the time values

encoding try

ds_test.time.encoding['units'] = "Seconds since 1970-01-01 00:00:00" ds_test.to_netcdf('ds_1_2.nc') # gives same error ```

ValueError: failed to prevent overwriting existing key calendar in attrs on variable 'time'. This is probably an encoding field used by xarray to describe how a variable is serialized. To proceed, remove this key from the variable's attributes manually.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  558293655
Powered by Datasette · Queries took 0.744ms · About: xarray-datasette