Description
I am trying to use xarray with different types of calendars. I made a few tests and wonder if somebody can help me make sense of the results. In my test, I generate a DataArray da
time series with a 365_day calendar using cftime. I then write that DataArray in a netCDF file and read it in another DataArray da2
Code Sample, a copy-pastable example if possible
import xarray as xr
import cftime
import numpy as np
# generate data for 365_days calendar
#
units = 'days since 2000-01-01 00:00'
time_365 = cftime.num2date(np.arange(0, 10 * 365), units, '365_day')
da = xr.DataArray(np.arange(time_365.size), coords = [time_365], dims = 'time', name = 'data')
# write dataArray in netcdf and read it in new DataArray
da.to_netcdf('data_365.nc', 'w')
da2 = xr.open_dataset('data_365.nc').data
# try resample da
try:
mean = da.resample(time='Y').mean()
print(mean.values)
except TypeError:
print('got TypeError for da')
# try resample da2
mean = da2.resample(time = 'Y').mean()
print (mean.values)
Problem description
As seen in the code the resampledoes not work for da
while it does for da2
. The problem is related to the the type of da.time
which is cftime.DatetimeNoLeap
while da2.time
is a datetime64
. I thought that xarray is using cftime to make the conversion from time numerical values to dates but it looks to me as if it is not the case.
I wonder if this makes sense or if it is something that should eventually be corrected.
INSTALLED VERSIONS
In [6]: print (cftime.version)
1.0.1
xarray: 0.10.8
pandas: 0.23.0
numpy: 1.14.3
scipy: 1.1.0
netCDF4: 1.4.1
h5netcdf: None
h5py: 2.7.1
Nio: None
zarr: None
bottleneck: 1.2.1
cyordereddict: None
dask: 0.17.5
distributed: 1.21.8
matplotlib: 2.2.2
cartopy: None
seaborn: 0.8.1
setuptools: 39.1.0
pip: 10.0.1
conda: 4.5.11
pytest: 3.5.1
IPython: 6.4.0
sphinx: 1.7.4