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

问题描述 投票:0回答:1

我正在使用包含本地(智利)日期和时间的 pandas 数据框,例如

当地时间
2023/9/2 23:33
2/9/2023 23:39
2023年3月9日1:00
2023/3/9 1:08

我曾经通过对我的

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

我开始使用

tz_location
指定时区,然后使用
tz_convert
转换为 UTC:

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 pandas datetime dst
1个回答
0
投票

您需要本地化然后转换:

df["local_time"] = pd.to_datetime(df["local_time"]).dt.tz_localize("America/Santiago").dt.tz_convert("UTC")
© www.soinside.com 2019 - 2024. All rights reserved.