【发布时间】:2021-07-14 17:48:52
【问题描述】:
1 我有一个 CSV,其中包含 GMT 时区字符串的列 data["timestamps1"],格式如下:
2020-02-28T12:53:47.167Z
2 我想在另一个 tz 时间(欧洲/柏林)中获取一个包含时区字符串的新列,格式并不重要,例如
2020-02-28 13:53:47
我该怎么做?我已经尝试过解析日期
import pandas as pd
from datetime import datetime
from pytz import timezone
path = "timestamps.csv"
data = pd.read_csv(path, sep=";", parse_dates= ["timestamps1"])
data['timestamps1_new'] = data['timestamps1'].dt.tz_localize('GMT').dt.tz_convert('Europe/Berlin')
然后我得到错误 “已经 tz-aware,使用 tz_convert 进行转换。” 当我不解析日期时,我得到 “只能将 .dt 访问器与 datetimelike 值一起使用”。即使我以这种方式操作字符串,也会发生错误:
data["timestamps1"] = data["timestamps1"].str[:-5]
data["timestamps1"] = data.timestamps1.replace("T"," ",regex=True)
以下是一些示例数据:
data = {'timestamps': ['2020-11-28T13:14:57.463Z','2020-11-28T13:14:57.603Z','2020-11-28T13:14:57.618Z']}
data = pd.DataFrame(data=data)
非常感谢!
【问题讨论】:
-
您的格式
2020-02-28T12:53:47.167Z(ISO8601) 会自动解析为可感知的日期时间(tzinfo 集,UTC)。所以你只需要转换:data['timestamps1_new'] = data['timestamps1'].dt.tz_convert('Europe/Berlin')
标签: python pandas datetime timezone pytz