Grouping time-series by some custom datetime range?

52 Views Asked by At

I have a simple OHLCV time-series. I obtain it from yahoo finance.

                                   Open          High     Adj Close     Volume
Datetime                                                                        
2021-11-27 00:00:00+00:00  53736.429688  54287.300781  54287.300781  349732864
2021-11-27 00:15:00+00:00  54321.816406  54470.097656  54470.097656   50278400
2021-11-27 00:30:00+00:00  54362.085938  54688.476562  54563.937500  125132800
2021-11-27 00:45:00+00:00  54552.707031  54552.707031  54208.027344   23285760
2021-11-27 01:00:00+00:00  54186.679688  54304.398438  54080.007812          0
2022-01-25 07:30:00+00:00  35861.457031  36036.191406  36023.011719  389357568
2022-01-25 07:45:00+00:00  36036.500000  36078.332031  36075.312500  102707200
2022-01-25 08:00:00+00:00  36069.089844  36211.867188  36152.500000  234246144
2022-01-25 08:15:00+00:00  36179.812500  36179.812500  36179.812500  125779968
2022-01-25 08:16:00+00:00  36283.058594  36283.058594  36283.058594          0

I know how to group them by frequency using resample.

df.resample("6H", origin="end")

Also I use origin="end" so that the intervals are relative to the end.

Can I somehow group the time-series by some custom defined range. Let's say: 6horus, 12h, 24h, 7days, 1month, 3m , 1y ... Those are the time-periods substracted from the last value.

The date-range would look like this:

2021-01-25 08:16:00+00:00 
2021-10-25 08:16:00+00:00
2021-12-25 08:16:00+00:00
2022-01-18 08:16:00+00:00
2022-01-24 08:16:00+00:00
2022-01-24 20:16:00+00:00 
2022-01-25 02:16:00+00:00 
2022-01-25 08:16:00+00:00

Now I know I could do several resamples and than filter and concatenate the resulting data-frames. I was wondering is there a simpler way to do this?

0

There are 0 best solutions below