Gostaria de fazer uma nova amostra de um objecto pandas usando uma data específica (ou mês) como limite do primeiro caixote do lixo. Por exemplo, no seguinte trecho eu gostaria que o meu primeiro valor de índice fosse 2020-02-29
e eu ficaria feliz em especificar start=2
ou 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
Até agora, este é o uso pd.cut
mais limpo que consigo arranjar e 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