Конвертировать метку времени в формате 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