Xarray 每年重新采样

Xarray resample inter annually

我正在尝试每年对我的数据进行重新采样,但很难设置重新采样的开始日期。

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

da = xr.DataArray(
    np.linspace(0, 11, num=36),
    coords=[
        pd.date_range(
            "15/12/1999", periods=36,
        )
    ],
    dims="time",
)
da.resample(time="1Y").mean()

我想要实现的是获得以下时间段的方法:15/12/1999-15/12/2000, 15/12/2000-15/12/2001, 15/12/2001 -15/12/2002, ...

我已经通过将时间移到第一个月并使用相应的 pandas 锚定偏移量解决了这个问题。之后,将时间重置。

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

da = xr.DataArray(
    np.concatenate([np.zeros(365), np.ones(365)]),
    coords=[
        pd.date_range(
            "06/15/2017", "06/14/2019", freq='D'
        )
    ],
    dims="time",
)

days_to_first_of_month = pd.Timedelta(days=int(da.time.dt.day[0])-1)
da['time'] = da.time - days_to_first_of_month
month = da.time.dt.strftime("%b")[0].values
resampled = da.resample(time=f'AS-{month}').sum()
resampled['time'] = resampled.time + days_to_first_of_month
print(resampled)

有没有更高效或更干净的方法?