Подсчет количества экземпляров между интервалом даты и времени в кадре данных панд - PullRequest
1 голос
/ 13 апреля 2019

У меня есть пандас датафрейм вида

print(ts.head())

id    start_datetime            end_datetime
0   2018-09-19 00:00:00   2018-09-19 03:00:00
1   2018-09-19 01:00:00   2018-09-19 03:00:00
2   2018-09-19 01:30:00   2018-09-19 03:00:00
3   2018-09-19 02:14:00   2018-09-19 03:00:00
4   2018-09-19 02:23:00   2018-09-19 03:00:00

Я хочу создать фрейм данных с индексом дата-время (почасовая частота) с одним столбцом. Столбец подсчитывает для каждого индекса, сколько строк в исходном фрейме данных включает этот индекс между значениями start_datetime и end_datetime.

Я начал с создания df с почасовой частотой, которая начинается и заканчивается в подходящее время:

ts = df.select('start_datetime','end_datetime').toPandas()
idx = pd.DatetimeIndex(freq="h", start="2018-09-19", end = '2018-11-18 
18:00:00')
df_hourly = pd.DataFrame(index=idx)
df_hourly.head()

        id
2018-09-19 00:00:00
2018-09-19 01:00:00
2018-09-19 02:00:00
2018-09-19 03:00:00
2018-09-19 04:00:00

Теперь мне нужно, чтобы каждая строка посчитала, сколько строк исходного кадра данных находится между ними. Я пытаюсь поиграть со значениями столбцов с помощью numpy, но я почти уверен, что для этого есть прекрасный способ.

1 Ответ

0 голосов
/ 13 апреля 2019

Я использую numpy трансляцию

s1 = df.start_datetime.values
s2 = df.end_datetime.values
s = df_hourly.index.values[:, None]
df_hourly['Value'] = np.sum((s1 <= s) & (s2 >= s), 1)
df['Value'] = np.sum((s1 <= s) & (s2 >= s), 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...