根据范围计算两个日期之间的小时数

Calculating hours between the two dates as per range

提问人:David Jackson 提问时间:2/10/2020 最后编辑:martineauDavid Jackson 更新时间:2/10/2020 访问量:367

问:

我有两列 startDate 和 endDate 我需要计算这些日期之间从 0 到 23 的小时数 例如,开始日期为 2000-12-05 10:00:00,结束日期为 2001-01-15 15:00:00 我需要计算 python 中这两个日期之间 0 到 23 小时发生了多少次

我从差值中计算出日期和计算小时数之间的差值。 之后,我计划从 startDate 到 startDateHour * 小时提取开始小时以获得 endHour 并遍历字典以增加计数,但是有没有其他方法可以做到这一点?

df['diff'] = df['endDate'] - df['startDate']
df['hours']= df['diff'] / np.timedelta64(1, 'h')
python pandas numpy 数据帧

评论


答:

0赞 Sayandip Dutta 2/10/2020 #1

您可以执行以下操作:

>>> df['diff'] = df['endDate'] - df['startDate']
>>> df['hours'] = df['diff'].dt.components.hours

考虑到这些是对象。pd.Timedelta

>>> idx = pd.date_range('2018-01-01', periods=5, freq='H')
>>> df = pd.DataFrame({'ts':ts, 'ts_2':ts + pd.Timedelta(hours=1)})
>>> df

                   ts                ts_2
0 2018-01-01 00:00:00 2018-01-01 01:00:00
1 2018-01-01 01:00:00 2018-01-01 02:00:00
2 2018-01-01 02:00:00 2018-01-01 03:00:00
3 2018-01-01 03:00:00 2018-01-01 04:00:00
4 2018-01-01 04:00:00 2018-01-01 05:00:00
>>> df['hour'] = (df['ts_2'] - df['ts']).dt.components.hours

>>> df

                   ts                ts_2  hour
0 2018-01-01 00:00:00 2018-01-01 01:00:00     1
1 2018-01-01 01:00:00 2018-01-01 02:00:00     1
2 2018-01-01 02:00:00 2018-01-01 03:00:00     1
3 2018-01-01 03:00:00 2018-01-01 04:00:00     1
4 2018-01-01 04:00:00 2018-01-01 05:00:00     1


评论

0赞 David Jackson 2/10/2020
这不会给小时开始 0,对吧?我想要像 0:15、1:20、3:20 这样的东西......23:20,即每小时的小时计数
0赞 Arun Singh 2/10/2020 #2
from datetime import datetime

 X = (datetime.strptime(2020-01-05 01:19:49, '%Y-%m-%d %h:%m:%s') - 
      datetime.strptime(2020-01-02 06:12:44, '%Y-%m-%d %h:%m:%s'))

 print(X)