Как я могу ускорить применение Pandas.index?

#python #pandas #numpy

#python #pandas #numpy

Вопрос:

Я хочу создать вектор / массив, когда индекс фрейма данных, который является DatetimeIndex, находится между часами 8 и 14.

Это работает, но очень медленно:

 permitted = flose.index.to_series().apply(lambda x: 1 if 8 <= x.hour <= 14 else 0)
 

Я пробовал варианты этого, но всегда получаю ошибки:

 permitted = np.where(8 <= flose.index.values.hour <= 14 ,1,0)
 

Ответ №1:

Попробуйте:

 permitted = ((8 <= flose.index.to_series().dt.hour) amp; (flose.index.to_series().dt.hour <= 14)).astype(int)
 

Комментарии:

1. Я получаю: AttributeError: объект ‘Series’ не имеет атрибута ‘hour’

2. Вам нужен amp; там?

3. Да, для принудительного выполнения результат также <= 14

4. будет ли np.logical_and медленнее? Это более читабельно

5. @ManInMoon Я не думаю, что это будет намного медленнее, если таковые имеются