Description
Code Sample
import numpy as np
import xarray as xr
import pandas as pd
from cftime import num2date, DatetimeNoLeap
times = num2date(np.arange(730), calendar='noleap', units='days since 0001-01-01')
da = xr.DataArray(np.arange(730), coords=[times], dims=['time'])
Problem description
I am trying to shift a time index as I need to align datasets to a common start point.
Directly incrementing one of the CFTimeIndex
values works:
>>> da.time.get_index('time')[0] + pd.Timedelta('365 days')
cftime.DatetimeNoLeap(2, 1, 1, 0, 0, 0, 0, -1, 1)
Trying to use shift
does not:
>>> da.time.get_index('time').shift(1,'Y')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/g/data3/hh5/public/apps/miniconda3/envs/analysis3-18.04/lib/python3.6/site-packages/pandas/core/indexes/base.py", line 2629, in shift
type(self).__name__)
NotImplementedError: Not supported for type CFTimeIndex
If I want to shift a time index is the only way currently is to loop over all the individual elements of the index and add a time offset to each.
Expected Output
I would expect to have CFTimeIndex shifted by the desired time delta.
Output of xr.show_versions()
INSTALLED VERSIONS
commit: None
python: 3.6.5.final.0
python-bits: 64
OS: Linux
OS-release: 3.10.0-693.17.1.el6.x86_64
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: C
LOCALE: None.None
xarray: 0.10.7
pandas: 0.23.1
numpy: 1.14.5
scipy: 1.1.0
netCDF4: 1.3.1
h5netcdf: 0.5.1
h5py: 2.8.0
Nio: None
zarr: 2.2.0
bottleneck: 1.2.1
cyordereddict: None
dask: 0.17.5
distributed: 1.21.8
matplotlib: 1.5.3
cartopy: 0.16.0
seaborn: 0.8.1
setuptools: 39.2.0
pip: 9.0.3
conda: None
pytest: 3.6.1
IPython: 6.4.0
sphinx: None