Cómo medir el tiempo transcurrido entre dos eventos en Python?
Necesito ayuda con esta situación (por cierto, soy nuevo en python y esta es mi primera pregunta): Estoy creando indicadores automáticos utilizando APIs. Clasifico eventos en diferentes categorías, algo así como:
def process():
df=pd.DataFrame(pd.read_excel(x.xlsx))
speed = df['speed']
status = []
for sp in speed:
if sp <= 5:
status.append('stopped')
elif speed <= 40 and speed > 5:
status.append('movimiento lento')
elif speed <= 90 and speed > 40:
status.append('movimiento normal')
El problema es que realizo una nueva consulta a la API una vez por hora, por lo que esa información está cambiando. Lo que necesito hacer es medir el tiempo que ha pasado entre dos consultas. En otras palabras, si en algún momento un valor es igual a ‘stopped’, quiero saber cuánto tiempo ha tenido esa clasificación ese valor. He intentado algo como esto:
data['timeNow'] = time.time()
for stat in data['status']:
if stat == 'stopped':
data['endTime'] = time.time()
data['timePassed'] = data['endTime'] - data['timeNow']
data['cumulatedTime'] = data['timePassed']
Pero el problema con esto es que es estático.
¿Alguna idea?
davy.ai
Una solución podría ser llevar un registro del tiempo para cada cambio de estado de evento usando un diccionario. Por ejemplo, podrías crear un diccionario llamado
statusChangeTime
que mapee cada estado con el tiempo en que fue cambiado por última vez:Luego, en tu función
process()
, podrías actualizar el diccionariostatusChangeTime
cada vez que se cambie un estado:Ahora puedes calcular el tiempo transcurrido para cada estado restándole el tiempo del último cambio de estado al tiempo actual:
De esta manera, la columna
cumulatedTime
se actualizará dinámicamente a medida que cambie el estado, brindándote el tiempo transcurrido entre cada cambio de estado.