在Pandas中将智利本地时间转UTC:当前方法是否正确?
你的实现核心逻辑正确,但代码有冗余,还有几个要点需要注意
核心逻辑的正确性
你通过tz_localize('America/Santiago')绑定智利本地时区,再用tz_convert('UTC')转换的思路完全正确——Pandas会自动根据America/Santiago时区的夏令时规则(智利通常在每年9月切换到夏令时,UTC偏移从-4变为-3)处理时间转换,你的测试结果也验证了这一点,核心逻辑没问题。
代码冗余优化
你的代码里做了两次pd.to_datetime转换,还额外用strftime转成字符串再转回时间,属于冗余操作。可以简化成:
import pandas as pd df = pd.read_csv("Example_dataset.csv") # 直接解析时间并绑定时区、转换UTC df['utc_time'] = pd.to_datetime(df['local_time'], format='%d/%m/%Y %H:%M')\ .dt.tz_localize('America/Santiago')\ .dt.tz_convert('UTC')
需要注意的遗漏要点
- 显式指定解析格式:虽然Pandas能自动识别
d/m/Y H:M格式,但如果数据中存在类似10/9/2023这种歧义日期(可能被误解析为月/日/年),一定要显式添加format='%d/%m/%Y %H:%M',避免解析错误。 - 处理时区切换的异常时间:智利夏令时切换时会出现「跳过1小时」(夏令时开始)或「重复1小时」(夏令时结束)的情况,如果原始数据包含这些无效/重复时间,
tz_localize默认会抛出错误。此时可根据业务需求设置errors参数:比如errors='coerce'将无效时间转为NaT,或者errors='ignore'跳过绑定(不推荐)。 - 环境时区依赖:确保Python环境支持
America/Santiago时区——Pandas在Python 3.9+默认使用zoneinfo模块(内置时区数据库),旧版本可能需要安装pytz库,若遇到时区不存在的错误,先检查依赖是否齐全。
内容的提问来源于stack exchange,提问作者Sheldon
相关产品推荐
相关产品推荐

