Подтвердить что ты не робот

Преобразование timedelta в плавающую точку

Я получил объект timedelta из вычитания двух дат. Мне нужно это значение как плавающая точка для дальнейших вычислений. Все, что я нашел, позволяет вычислять с помощью плавающих точек, но результат все еще является объектом timedelta.

time_d = datetime_1 - datetime_2
time_d_float = float(time_d)

не работает.

4b9b3361

Ответ 1

Вы можете использовать метод total_seconds:

time_d_float = time_d.total_seconds()

Ответ 2

В Python 3.2 или выше вы можете разделить два timedelta, чтобы получить число с плавающей точкой. Это полезно, если вам нужно, чтобы значение было в единицах, отличных от секунд.

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

Ответ 3

Вы можете использовать numpy, чтобы решить эту проблему:

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)

Надеюсь, это полезно!

Ответ 4

Если вам нужно количество дней в качестве плавающего числа, вы можете использовать атрибут timedelta days

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

Ответ 5

У меня была такая же проблема, и я использовал timedelta.total_seconds, чтобы получить расчетную продолжительность в секундах с помощью float, и она работает. Надеюсь, это сработает для вас.

from datetime import timedelta,datetime

time_d = datetime_1 - datetime_2

time_d.total_seconds()