Подсчитать количество вхождений в час с даты / до начала / остановки - PullRequest
1 голос
/ 07 мая 2019

Первая публикация, надеюсь, это не дубликат - если это так, пожалуйста, дайте мне знать, если это так, так как я провел последние несколько дней в поисках способа сделать то, что я хочу.

Итак, у меня есть очень большой набор данных, который имеет два интересующих столбца - "session_start" и "session_end":

          session_start          session_end   group
0   2018-01-03 00:00:00  2018-01-03 00:00:14   1
1   2018-01-03 00:00:00  2018-01-03 00:26:58   2
2   2018-01-03 00:00:00  2018-01-03 00:00:12   1
...
16  2018-01-03 00:00:00  2018-01-03 00:46:07   6
17  2018-01-03 00:00:00  2018-01-03 00:00:18   2
18  2018-01-03 00:00:00  2018-01-03 00:00:08   4
19  2018-01-03 00:00:00  2018-01-03 00:00:06   2

Что я хотел бы сделать, это "преобразовать" это изнабор данных start-stop для подсчета количества вхождений в час (или получаса) и получения части часа (или получаса), где она существует.Например, в строке 1 выше значение 00:00:00 - 00:26:58 будет равно 0,449 для 12:00 - 01:00.Строка, которая является 05:32:45 - 07:12:33, будет частью 5:00 утра - 6:00 утра, всего 6:00 утра - 7:00 утра, и частью 7:00 утра - 8:00 утра.Это будет суммироваться за час, за день, за 365 дней в году, сгруппированы по нескольким переменным и будут иметь следующий результат:

session_time_hr     grp1_ct    grp2_ct ...
2018-01-01 00:00    45.6       42
2018-01-01 01:00    52         132
2018-01-01 02:00    33         1
...

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

Я видел этот пост, и я думаю о той же логике, но строго в Python: https://powerpivotpro.com/2013/04/counting-active-rows-in-a-time-period-guest-post-from-chris-campbell/

Я такжеглядя на библиотеку datetimerange (https://pypi.org/project/DateTimeRange/), но, похоже, только дает true / false, находится ли datetime в пределах диапазона, а не пропорция диапазона.

...