web-dev-qa-db-fra.com

Convertir timedelta en virgule flottante

J'ai eu un objet timedelta de la soustraction de deux dates-heures. J'ai besoin de cette valeur en tant que virgule flottante pour des calculs ultérieurs . Tout ce que j'ai trouvé permet le calcul avec des points flottants, mais le résultat est toujours un objet timedelta.

time_d = datetime_1 - datetime_2
time_d_float = float(time_d)

ne marche pas.

36
fidelitas

Vous pouvez utiliser la méthode total_seconds :

time_d_float = time_d.total_seconds()
51
unutbu

Dans les versions récentes de Python, vous pouvez diviser deux timedeltas pour donner un float. Ceci est utile si vous avez besoin que la valeur soit en unités autres que secondes.

time_d_min = time_d / datetime.timedelta(minutes=1)
time_d_ms  = time_d / datetime.timedelta(milliseconds=1)
13
dan04

Vous pouvez utiliser numpy pour résoudre ce problème:

import pandas as pd
import numpy as np

time_d = datetime_1 - datetime_2

#for a single value
number_of_days =pd.DataFrame([time_d]).apply(np.float32)

#for a Dataframe
number_of_days = time_d.apply(np.float32)

J'espère que c'est utile!

2
Monique Marins

Si vous aviez besoin du nombre de jours sous forme de nombre flottant, vous pouvez utiliser l'attribut days de timedelta.

time_d = datetime_1 - datetime_2
number_of_days = float(time_d.days)
0
RoachLord