Я хотел бы сделать некоторую годовую статистику (кумулятивную сумму) по ежедневному временному ряду данных в наборе данных xarray. Сложность заключается в том, что день, с которого начинается рассматриваемый год, должен быть гибким, а временной ряд содержит високосные годы.
Я пробовал, например. следующее:
rollday = -181
dr = pd.date_range('2015-01-01', '2017-08-23')
foo = xr.Dataset({'data': (['time'], np.ones(len(dr)))}, coords={'time': dr})
foo_groups = foo.roll(time=rollday).groupby(foo.time.dt.year)
foo_cumsum = foo_groups.apply(lambda x: x.cumsum(dim='time', skipna=True))
что является «неблагоприятным» в основном из-за двух вещей: (1) скользящий период не учитывает високосные годы, поэтому получается смещение в один день на каждый високосный год и (2) начало первого года (до конца июнь) добавляется в конец свернутого временного ряда, что создает некий «фальшивый год», когда совокупные суммы больше не имеют смысла.
Пробовал также сначала обрезать концы временного ряда, но потом прокатка уже не работает. Ресэмплинг мне тоже не показался вариантом, так как я не смог найти подходящую строку частоты pandas.
Я уверен, что есть лучший/правильный способ сделать это. Кто-нибудь может помочь?