Python панды, находящие данные между временем - PullRequest
0 голосов
/ 10 октября 2018

Я использую статистику преступлений (во фрейме данных) и пытаюсь определить, когда большинство преступлений происходит между 12:00, 8:00 и 16:00 и 16:00 и 12:00.Я уже преобразовал столбец в DateTime.код, который я использовал:

#first attempt
df_15['FIRST_OCCURRENCE_DATE']=pd.date_range('01/01/2015',periods=10000,freq='H')
df_15[(df_15['FIRST_OCCURrENCE_DATE'] > '2015-1-1 00:00:00') & (df_15['FIRST_OCCURRENCE_DATE'] <= '2015-12-31 08:00:00')]

#second attempt
df_15 = df_15.set_index(df_15['FIRST_OCCURRENCE_DATE'])
df_15.loc['2015-01-01 00:00:00':'2015-12-31 00:00:00']

#third attempt
date_rng = pd.date_range(start='00:00:00', end='08:00:00',freq='H')
date_rng1 = pd.DataFrame(date_rng)
date_rng1.head(30)

#fourth attempt
df_15.FIRST_OCCURRENCE_DATE.dt.hour
ts = pd.to_datetime('12/31/2015 08:00:00')
df_15.loc[df_15.FIRST_OCCURRENCE_DATE <= ts,:].head()

Результаты, которые я получаю, представляют собой записи времени, выходящие за пределы 08:00: 00.

PS.все данные за тот же год

1 Ответ

0 голосов
/ 10 октября 2018

Похоже, вы можете просто сделать небольшую арифметику и сосчитать:

(df_15['FIRST_OCCURrENCE_DATE'].dt.hour // 8).value_counts()

Есть много способов решить эту проблему, но это, вероятно, самый простой.Извлеките час дня из каждой даты, найдите, к какому временному интервалу она относится.Разделите этаж на 8, чтобы получить 0 (12–8 утра), 1 (8–4 вечера) или 2 (4–12 утра) для каждого и просто сосчитать эти вхождения.

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