两个时间戳之间的差异四舍五入到小时,并将列添加到datafram

2024-10-03 21:35:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个看起来像这样的数据帧,我添加的最后两列帮助我理解时差。我想把timestampforecastRan之间的时间差四舍五入到下一个小时,并将其作为一列添加到我的数据帧中。然而,我如何拥有它只是给了我时间(不是四舍五入)。你知道吗

            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时没有任何错误。不知道具体在哪里集合,如何集合。 谢谢。你知道吗


Tags: 数据inimportdftime时间dtdiff
1条回答
网友
1楼 · 发布于 2024-10-03 21:35:44

我认为需要^{}

df['time_diff']= np.ceil(((df['timeStamp'] - df['forecastRan']).dt.total_seconds()/3600))
print (df)
            timeStamp         forecastRan  time_diff_in_hours  \
0 2016-11-23 23:00:00 2016-11-23 12:18:00                10.0   
1 2016-11-24 00:00:00 2016-11-23 12:18:00                11.0   
2 2016-11-24 01:00:00 2016-11-23 12:18:00                12.0   

   time_diff_seconds  time_diff  
0            38520.0       11.0  
1            42120.0       12.0  
2            45720.0       13.0  

^{}

df['time_diff']= (df['timeStamp'] - df['forecastRan']).dt.ceil('h')
print (df)
            timeStamp         forecastRan  time_diff_in_hours  \
0 2016-11-23 23:00:00 2016-11-23 12:18:00                10.0   
1 2016-11-24 00:00:00 2016-11-23 12:18:00                11.0   
2 2016-11-24 01:00:00 2016-11-23 12:18:00                12.0   

   time_diff_seconds time_diff  
0            38520.0  11:00:00  
1            42120.0  12:00:00  
2            45720.0  13:00:00 

df['time_diff' ]= (df['timeStamp'] - df['forecastRan']).dt.ceil('h').astype('timedelta64[h]')
print (df)
            timeStamp         forecastRan  time_diff_in_hours  \
0 2016-11-23 23:00:00 2016-11-23 12:18:00                10.0   
1 2016-11-24 00:00:00 2016-11-23 12:18:00                11.0   
2 2016-11-24 01:00:00 2016-11-23 12:18:00                12.0   

   time_diff_seconds  time_diff  
0            38520.0       11.0  
1            42120.0       12.0  
2            45720.0       13.0   

相关问题 更多 >