Конвертировать метку времени в формате csv из UTC в гавайский часовой пояс - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть 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 Ответ

0 голосов
/ 11 сентября 2018

Есть пара проблем с приведенным выше кодом (например, 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
...