Первая публикация, надеюсь, это не дубликат - если это так, пожалуйста, дайте мне знать, если это так, так как я провел последние несколько дней в поисках способа сделать то, что я хочу.
Итак, у меня есть очень большой набор данных, который имеет два интересующих столбца - "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 в пределах диапазона, а не пропорция диапазона.