Конвертировать метку времени в формате csv из UTC в гавайский часовой пояс

У меня есть csv данных с меткой времени в UTC, но мне нужно иметь местное время из Гавайев (UTC-10). В идеале я хотел бы добавить новый столбец в CSV с гавайским временем наряду с временем UTC, за которым следуют данные.

Вот формат файла csv с датой и временем в первом столбце. Формат немного странный, так как он имеет "год-месяц-дата час / минута / секунда" как обычно, но затем следует "UTC", что, я думаю, может вызвать у меня проблему.

У меня есть простой код для извлечения столбца времени, присвоения его времени UTC (поскольку временные метки имеют неизвестный часовой пояс), а затем преобразование его в UTC-10.

import pandas as pd
import os
from datetime import datetime
from dateutil import tz

# read the file in csv 
K = pd.read_csv("kona_python.csv")

# time series data selection
UTCtime = K.iloc[:,0] 

# access timezones:
utc_timezome = tz.gettz('UTC')
hawaii_timezone = tz.gettz('US/Hawaii')

# feeding in the csv column data
utc = UTCtime

# set the datetime object to the UTC timezone
utc = utc.replace(tzinfo = utc_timezome)

# convert time zone to Hawaii
hawaii = utc.astimezone(hawaii_timezone)

Однако он работает с этой ошибкой, где tzinfo не ожидается. Я правильно использую dateutil? Или есть более простой способ сделать это? Любая помощь высоко ценится!

Обновление - образец CSV:

UTC timestamp   A   B   C   D   E   F
2018-07-20 22:22:06 UTC 1.27    21.64   1.11    0.37    22.31   0.33
2018-07-20 22:23:25 UTC 1.4 21.82   0.33    0.75    22.59   0.33
2018-07-20 22:24:45 UTC 2.09    20.31   0.93    1.55    21.05   0.4
2018-07-20 22:26:05 UTC 0.8 21.34   0.93    1.36    20.89   0.4
2018-07-20 22:27:24 UTC 0.4 19.93   0.93    1.37    22.58   0.24

1 ответ

Есть несколько проблем с кодом выше (например, utc - это серия строк, а не временных меток, тогда функция замены не может быть применена к серии, как если бы это был часовой пояс), рабочий код приведен ниже.:

import pandas as pd
import os
from datetime import datetime
from dateutil import tz

# read the file in csv 
K = pd.read_csv("a.csv")

# time series data selection
UTCtime = K.iloc[:,0] 

# access timezones:
hawaii_timezone = tz.gettz('US/Hawaii')

# convert the string to datime
utc = UTCtime.apply(lambda x : datetime.strptime(x,"%Y-%m-%d %H:%M:%S UTC"))

# convert time zone to Hawaii (first localize to utc)
hawaii = utc.apply(lambda x : x.tz_localize('utc').astimezone(hawaii_timezone))

print (hawaii)

Код был протестирован с этим CSV:

col,col,col
2018-07-20 22:22:06 UTC,a,b
Другие вопросы по тегам