Группировка по часам с указанием времени начала и окончания, даты и времени в столбцах csv с Python / Pandas - PullRequest
1 голос
/ 10 февраля 2020

Я просто промочил пальцы на Pandas и застрял. Я хочу агрегировать события (получить количество) в CSV по часам и иметь время начала и время окончания события.

, то есть пример будет:

event, start, end
soccer, 2020-01-20 00:34:00, 2020-01-20 02:34:00,
football, 2020-01-20 00:34:00, 2020-01-20 01:34:00
etc

ожидаемый вывод:

00:00:00 - 2 (both began in 0th hour and went to 1st hour)
01:00:00 - 2 (both were live in 1st hour)
02:00:00 - 1 (only soccer occurred in 02 hour)

Как бы вы go об этом? Я пытался переиндексации, повторной выборки, разница во времени, индексы времени - все без удачи.

1 Ответ

1 голос
/ 10 февраля 2020

То, что вы хотите, - это частое распределение часов, в течение которых происходят события. Во-первых, вам нужно сгенерировать примеры, из которых можно получить распределение, создав диапазон, а затем взорвав его:

hours = events.apply(lambda row: range(row['end'].hour - row['start'].hour + 1), axis=1).explode()

0    0
0    1
0    2
1    0
1    1
dtype: object

Не забудьте добавить единицу к разнице между окончанием и началом учета ошибка ограждения . Тогда просто получите значение для образца. Чтобы получить частоту в порядке часов, а не по убыванию, передайте sort=False.

hours.value_counts(sort=False)

0    2
1    2
2    1
dtype: int64

...