Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

176
Vistas
agregando en una ventana de 24 horas desplazada

Considere el siguiente ejemplo

 import datetime import pandas as pd df = pd.DataFrame({'var' : np.random.randint(0,10, size = 16993)}, index = pd.date_range('2021-01-01 00:00:00', '2021-03-01 00:00:00', freq ='5 min')) df.head(10) Out[272]: var 2021-01-01 00:00:00 5 2021-01-01 00:05:00 9 2021-01-01 00:10:00 1 2021-01-01 00:15:00 5 2021-01-01 00:20:00 8

Este es un marco de datos clásico con datos intradía. Necesito agregarlo a nivel diario, pero no quiero usar las 24 horas desde las 00:00:00 hasta 23:59:59 que se usarían implícitamente si ejecutara df.groupby(df.index.date)

 df.groupby(df.index.date).agg('sum').head() Out[274]: var 2021-01-01 1440 2021-01-02 1238 2021-01-03 1274 2021-01-04 1277 2021-01-05 1253

Más bien, quiero agregar usando una ventana de 24 horas que comienza a la 1:00:00 todos los días. Así que el primer grupo será entre 2021-01-01 01:00:00 y 2021-02-01 00:59:59 , el segundo entre 2021-02-01 01:00:00 y 2021-03-01 00:59:59 , y así sucesivamente. Los horarios de inicio se pueden identificar fácilmente, como se muestra a continuación.

 df['flag'] = df.index.time == datetime.time(1,0)

¿Cuál es la mejor manera de proceder para crear los grupos? ¡Gracias!

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Resample con offset

El parámetro de compensación es el Timedelta que se puede agregar al origen para crear intervalos de agrupación personalizados

 df.resample('D', offset=pd.Timedelta(hours=1)).sum()

 var 2020-12-31 01:00:00 72 2021-01-01 01:00:00 1278 2021-01-02 01:00:00 1301 2021-01-03 01:00:00 1291 2021-01-04 01:00:00 1346 ....
over 4 years ago · Santiago Trujillo Denunciar

0

Puede usar groupby.sum si resta 1H del mero:

 df.groupby((df.index - pd.Timedelta('1H')).date).sum() # var # 2020-12-31 58 # 2021-01-01 1319 # 2021-01-02 1261 # ... ... # 2021-02-26 1286 # 2021-02-27 1246 # 2021-02-28 1240
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda