我有一个csv数据,已将时间戳记为UTC,但需要夏威夷的本地时间(UTC-10)。理想情况下,我会在csv中添加一个新列,其中包含夏威夷时间和UTC时间,然后是数据。
Here is the csv file format,第一列带有日期时间。该格式有点奇怪,因为它具有正常的“年-月-日小时/分钟/秒”,但是后面跟着“ 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)
但是它可以与this error一起运行,而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
答案 0 :(得分:0)
上面的代码有两个问题(例如utc是一系列字符串,而不是时间戳,那么replace函数不能像在时区那样应用于一系列),请参见下文有效的代码:
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