#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
(логическое значение): возвращает UTCDatetimeIndex
, еслиTrue
(datetime.datetime
также преобразует любые объекты, поддерживающие tz).
df_vitals.Date_time = pd.to_datetime(df_vitals.Date_time, utc=True)