【发布时间】:2020-11-09 13:20:09
【问题描述】:
我正在努力按照我的标题所说的那样做。我有一个带有日期时间和时区的熊猫数据框。
我正在尝试将列 startDate 转换为本地天真的日期时间,如下所示:
这是执行此操作的一段代码
df['startDate'] = df['startDate'].apply(lambda x: timezone('UTC').localize(x))
df["startDate"] = df.apply(lambda x: x.startDate.astimezone(timezone(x.timezone)), axis=1)
df["startDate"] = df["startDate"].dt.tz_localize(None)
我收到此错误消息。
Tz 感知 datetime.datetime 不能转换为 datetime64,除非 utc=真
如果我真的精确 UTC=True,我会得到我的初始日期时间值,这不是我想要实现的目标
我想从中得到
2020-07-20 20:30:00-07:00
2020-07-21 16:00:00-04:00
2020-07-20 20:30:00-07:00
到这里
2020-07-20 20:30:00
2020-07-21 16:00:00
2020-07-20 20:30:00
我正在考虑转换为字符串,并删除最后 5 个字符并重新转换为日期时间对象。不过我正在寻找更好的解决方案。
谢谢
【问题讨论】:
-
1.放弃应用并使用
df['startDate'].tz_localize('UTC')2. 然后使用dt.normalize()或strftime方法将您的日期格式化为字符串。 -
不起作用,它将我的日期时间重新转换为 UTC 时间,我想将其保留为当地时间