У меня есть фрейм данных, который выглядит следующим образом, последние два столбца я добавил, чтобы помочь мне понять разницу во времени.Я бы хотел, чтобы разница во времени между timestamp
и forecastRan
была округлена до следующего часа и добавлена в виде столбца к моему фрейму данных.Однако, как у меня это просто дает мне часы (не округленные).
timeStamp forecastRan time_diff_in_hours time_diff_seconds
12 2016-11-23 23:00:00 2016-11-23 12:18:00 10.0 38520.0
13 2016-11-24 00:00:00 2016-11-23 12:18:00 11.0 42120.0
14 2016-11-24 01:00:00 2016-11-23 12:18:00 12.0 45720.0
Вот способы, которыми я получил разницу
df['time_diff_in_hours'] = (df['timeStamp'] - df['forecastRan']).astype('timedelta64[h]')
df['time_diff']= (df['timeStamp'] - df['forecastRan']).dt.total_seconds()
Однако, первый простодает мне часы.Со вторым я попытался разделить на 3600, чтобы получить часы, а затем использовал math.ceil
для округления, например:
import datetime
import math
df['time_diff']= math.ceil(((df['timeStamp'] - df['forecastRan']).dt.total_seconds()/3600))
Я получаю TypeError: cannot convert the series to <class 'float'>
.Я думаю, что проблема произошла, когда я набрался math.ceil
, потому что, когда я просто использовал (df['timeStamp'] - df['forecastModelRun']).dt.total_seconds()/3600
, я не получил никаких ошибок.Не уверен, где именно округлить и как.Спасибо.