Я хотел бы перепробовать объект панды, используя определенную дату (или месяц) в качестве края первого мусорного контейнера. Например, в следующем фрагменте я бы хотел, чтобы мое первое значение индекса было 2020-02-29
и я был бы счастлив указать start=2
или start=2020-02-29
.
>>> dates = pd.date_range(2020-01-29, 2021-07-04)
>>> s = pd.Series(range(len(dates)), index=dates)
>>> s.resample('4M').count()
2020-01-31 3
2020-05-31 121
2020-09-30 122
2021-01-31 123
2021-05-31 120
2021-09-30 34
Freq: 4M, dtype: int64
Пока это самое чистое, что я могу придуматьpd.cut
groupby
:
>>> rule = 4M
>>> start = pd.Timestamp(2020-02-29) - pd.tseries.frequencies.to_offset(rule)
>>> end = s.index.max() + pd.tseries.frequencies.to_offset(rule)
>>> bins = pd.date_range(start, end, freq=rule)
>>> gb = s.groupby(pd.cut(s.index, bins)).count()
>>> gb.index = gb.index.categories.right
>>> gb
2020-02-29 32
2020-06-30 122
2020-10-31 123
2021-02-28 120
2021-06-30 122
2021-10-31 4
dtype: int64