在 pandas 中从当地时间转换为 UTC

Converting from local time to UTC in pandas

提问人:Sheldon 提问时间:9/4/2023 最后编辑:Sheldon 更新时间:9/4/2023 访问量:58

问:

我正在处理包含当地(智利)日期和时间的熊猫数据帧,例如

local_time
2/9/2023 23:33
2/9/2023 23:39
3/9/2023 1:00
3/9/2023 1:08

我曾经通过对local_time列应用批量时移 () 将这些日期和时间转换为 UTC,但现在我想考虑夏令时的变化。pd.Timedelta(4, "h")

在转换为 UTC 之前,我开始使用以下方法指定时区:tz_locationtz_convert

import pandas as pd
from datetime import datetime
df = pd.read_csv("Example_dataset.csv")
pd.to_datetime(pd.to_datetime(df['local_time']).apply(lambda x: datetime.strftime(x, '%d-%m-%Y %H:%M:%S'))).dt.tz_localize('America/Santiago').dt.tz_convert('UTC')

这似乎适用于此处提供的示例数据集:2023 年 9 月 2 日的数据移动了 4 小时,而 9 月 3 日的数据移动了 3 小时。

0   2023-09-03 03:33:00+00:00
1   2023-09-03 03:39:00+00:00
2   2023-09-03 04:00:00+00:00
3   2023-09-03 04:08:00+00:00

这是正确的处理方式还是我在这里遗漏了什么?

Python 熊猫 日期时间 DST

评论


答:

2赞 Jason Baker 9/4/2023 #1

您需要本地化然后转换:

df["local_time"] = pd.to_datetime(df["local_time"]).dt.tz_localize("America/Santiago").dt.tz_convert("UTC")

评论

0赞 Sheldon 9/4/2023
这就是我尝试过的。感谢您的确认。