Удаление определенных часов в сутках из временных рядов за несколько годовv — python

#python #datetime

#python #datetime

Вопрос:

У меня есть фрейм даты, содержащий почасовые данные за 15 лет. Теперь я хотел бы уменьшить эти данные, чтобы сохранить только дневное время с 6 утра до 8 вечера и избавиться от всех остальных строк. Каков наилучший подход для этого?

Это то, что я пробовал до сих пор:

 print(df['date_time'].dtype)
df_only_daytime = df.drop(df[[df['date_time'].hour < 6]], axis=0) 
  

Результат:

 datetime64[ns]

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-61-a4e1fe6a71b4> in <module>
      1 print(df['date_time'].dtype)
----> 2 df_only_daytime = df.drop(df[[df['date_time'].hour < 6]], axis=0)

~anaconda3libsite-packagespandascoregeneric.py in __getattr__(self, name)
   5272             if self._info_axis._can_hold_identifiers_and_holds_name(name):
   5273                 return self[name]
-> 5274             return object.__getattribute__(self, name)
   5275 
   5276     def __setattr__(self, name: str, value) -> None:

AttributeError: 'Series' object has no attribute 'hour'

  

Спасибо за вашу помощь!

Ответ №1:

Привет, вы можете взглянуть на этот пример:

 df.loc[(df['date_time'].dt.hour >= 6) amp; (df['date_time'].dt.hour <= 8)] # Add dt in front to get the hour
  

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

1. Спасибо, это помогло! Есть ли способ, чтобы текущая дата не добавлялась, когда я использую dt.hour?

2. Я не понимаю, что вы имеете в виду, не добавляя текущую дату?

3. Извините, я запутался с чем-то еще, что я сделал ранее. Все хорошо! Спасибо за вашу помощь!