Pandas aumenta el muestreo de filas con una hora de inicio y una hora de finalización.
Tengo un marco de datos de la siguiente forma:
En [5]: df = pd.DataFrame({
...: 'start_time': ['2022-01-01 01:15', '2022-01-01 13:00'],
...: 'end_time': ['2022-01-01 03:45', '2022-01-01 15:00'],
...: 'values': [1000, 750]})
En [6]: df
Out[6]:
start_time end_time values
0 2022-01-01 01:15 2022-01-01 03:45 1000
1 2022-01-01 13:00 2022-01-01 15:00 750
Me gustaría convertirlo en 24 valores horarios, dividiendo los valores proporcionalmente a lo largo de las horas en el rango start_time/end_time. Para el ejemplo anterior, esto debería resultar en:
En [10]: resultado
Out[10]:
value
2022-01-01 00:00:00 0
2022-01-01 01:00:00 300
2022-01-01 02:00:00 400
2022-01-01 03:00:00 300
2022-01-01 04:00:00 0
2022-01-01 05:00:00 0
2022-01-01 06:00:00 0
2022-01-01 07:00:00 0
2022-01-01 08:00:00 0
2022-01-01 09:00:00 0
2022-01-01 10:00:00 0
2022-01-01 11:00:00 0
2022-01-01 12:00:00 0
2022-01-01 13:00:00 375
2022-01-01 14:00:00 375
2022-01-01 15:00:00 0
2022-01-01 16:00:00 0
2022-01-01 17:00:00 0
2022-01-01 18:00:00 0
2022-01-01 19:00:00 0
2022-01-01 20:00:00 0
2022-01-01 21:00:00 0
2022-01-01 22:00:00 0
2022-01-01 23:00:00 0
Los rangos de start_time/end_time no se superponen. ¿Alguna sugerencia sobre cómo lograr esto?
davy.ai
Para lograr esto, podemos crear primero un dataframe vacío con 24 intervalos por hora y luego recorrer cada fila del dataframe original para dividir los valores proporcionalmente a lo largo de las horas en el rango de start_time/end_time.
Aquí está el código:
Esto debería dar como resultado el resultado deseado: