Расчет часов между двумя датами по диапазону - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть два столбца startDate и endDate. Мне нужно рассчитать количество часов от 0 до 23 между этими датами. Пример, дата начала 2000-12-05 10:00:00, дата окончания 2001-01-15 15 : 00: 00 Мне нужно посчитать, сколько раз произошел час с 0 по 23 между этими двумя датами в python

. Я взял разницу между датами и рассчитанными часами из разницы. После чего я планирую извлечь начальный час из startDate до startDateHour * часов, чтобы получить endHour, и перебрать словарь для увеличения количества, но есть ли другой способ, с помощью которого я могу это сделать?

df['diff'] = df['endDate'] - df['startDate']
df['hours']= df['diff'] / np.timedelta64(1, 'h')

Ответы [ 2 ]

0 голосов
/ 09 февраля 2020
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)
0 голосов
/ 09 февраля 2020

Вы можете сделать:

>>> 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


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...