Анализ pandas DateTime, где в фрейме данных разные часовые пояса

#python #pandas #dataframe #datetime #timezone

#python #pandas #фрейм данных #datetime #Часовой пояс

Вопрос:

Я пытаюсь разобрать CSV-файл в фрейм данных. CSV имеет несколько часовых поясов из-за перехода на летнее время, который произошел во время записи данных (одни в 01:00, другие в 02:00). Вот фрагмент для понимания:

введите описание изображения здесь

После чтения в файле csv я настроил свой код следующим образом:

 df_vitals.Date_time = pd.to_datetime(df_vitals.Date_time, format ='%Y-%m-%d %H:%M:%S%z')
df_vitals.Date_time = df_vitals.Date_time.dt.tz_convert("Europe/Madrid")
 

Где Date_time мой столбец, содержащий смешанные часовые пояса. Я получаю следующую ошибку:

 AttributeError: Can only use .dt accessor with datetimelike values
 

Обратите внимание, что это отлично работает для моих файлов csv только с одним часовым поясом (т. Е. Там, Где не было перехода на летнее время)

Как я могу правильно анализировать csv-файлы, в которых содержится более одного часового пояса?

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

1. ваш ввод имеет несколько смещений UTC (точнее, не часовых поясов). Однако серия pandas типа pandas datetime может обрабатывать только одно смещение UTC или один конкретный часовой пояс. Вот почему pd.to_datetime возвращает здесь pd.Series объектов Python datetime (не pandas datetime), что не позволяет использовать средство dt доступа.

2. Отличное объяснение, почему он это делал @MrFuppes — спасибо

Ответ №1:

Вместо использования format установите utc параметр to_datetime :

utc (логическое значение): возвращает UTC DatetimeIndex , если True ( datetime.datetime также преобразует любые объекты, поддерживающие tz).

 df_vitals.Date_time = pd.to_datetime(df_vitals.Date_time, utc=True)