Панды, датафрейм со столбцом datetime64, запрос по часам

У меня есть пандас датафрейм df который имеет один столбец, состоящий из datetime64например,

<class 'pandas.core.frame.DataFrame'>
Int64Index: 1471 entries, 0 to 2940
Data columns (total 2 columns):
date    1471  non-null values
id      1471  non-null values
dtypes: datetime64[ns](1), int64(1)

Я хотел бы отобрать образец df используя в качестве критерия час дня (независимо от другой информации в date). Например, в псевдокоде

df_sub = df[ (HOUR(df.date) > 8) & (HOUR(df.date) < 20) ]

для какой-то функции HOUR,

Я думаю, что проблема может быть решена путем предварительного преобразования из datetime64 в datetime, Можно ли сделать это более эффективно?

1 ответ

Решение

Нашел простое решение.

df['hour'] = df.date.apply(lambda x : x.hour)

df_sub = df[(df.hour > 8) & (df.hour) <20]

РЕДАКТИРОВАТЬ:

Есть собственность dt специально для решения этой проблемы. Запрос становится:

df_sub = df[ (df.date.dt.hour > 8) 
              &  (df.date.dt.hour < 20) ]
Другие вопросы по тегам