El tutorial o código que encontrarás en este post es la resolución más eficiente y válida que hallamos a esta duda o problema.
Solución:
Usar base=30
junto con label='right'
parámetros en pd.Grouper
.
especificando label='right'
hace que el horario para empezar a agrupar sea a partir de las 6:30 (lado superior) y no a las 5:30. También, base
se establece en 0 de forma predeterminada, por lo tanto, es necesario compensarlos en 30 para tener en cuenta la propagación hacia adelante de las fechas.
Suponga que desea agregar el primer elemento de cada subgrupo, luego:
df.groupby(pd.Grouper(freq='60Min', base=30, label='right')).first()
# same thing using resample - df.resample('60Min', base=30, label='right').first()
rendimientos:
data
index
2017-02-14 06:30:00 11198648.0
2017-02-14 07:30:00 11198650.0
2017-02-14 08:30:00 NaN
2017-02-14 09:30:00 NaN
2017-02-14 10:30:00 NaN
2017-02-14 11:30:00 NaN
2017-02-14 12:30:00 NaN
2017-02-14 13:30:00 NaN
2017-02-14 14:30:00 NaN
2017-02-14 15:30:00 NaN
2017-02-14 16:30:00 NaN
2017-02-14 17:30:00 NaN
2017-02-14 18:30:00 NaN
2017-02-14 19:30:00 NaN
2017-02-14 20:30:00 NaN
2017-02-14 21:30:00 NaN
2017-02-14 22:30:00 NaN
2017-02-14 23:30:00 11207728.0
Usando DataFrame.resample
que es un método dedicado para remuestrear series de tiempo, de esta manera no necesitamos DataFrame.GroupBy
y pd.Grouper
:
df.resample('60min', base=30, label='right').first()
Producción
data
index
2017-02-14 06:30:00 11198648.0
2017-02-14 07:30:00 11198650.0
2017-02-14 08:30:00 NaN
2017-02-14 09:30:00 NaN
2017-02-14 10:30:00 NaN
2017-02-14 11:30:00 NaN
2017-02-14 12:30:00 NaN
2017-02-14 13:30:00 NaN
2017-02-14 14:30:00 NaN
2017-02-14 15:30:00 NaN
2017-02-14 16:30:00 NaN
2017-02-14 17:30:00 NaN
2017-02-14 18:30:00 NaN
2017-02-14 19:30:00 NaN
2017-02-14 20:30:00 NaN
2017-02-14 21:30:00 NaN
2017-02-14 22:30:00 NaN
2017-02-14 23:30:00 11207728.0
Aviso: cuando tiene varias columnas en su marco de datos, debe especificar la columna en la que desea agregar:
df.resample('60min', base=30, label='right')['data'].first()
Agradecemos que quieras ayudar nuestro análisis escribiendo un comentario y dejando una valoración te damos las gracias.