#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 Я не думаю, что это будет намного медленнее, если таковые имеются