You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas .tz_convert()转换时区出错:墨西哥城时区异常

问题分析与解决

1. 代码逻辑错误:丢失输入时区信息

你的输入字符串包含UTC时区标识(+0000),但使用format='%Y-%m-%d %H:%M:%S'解析时,Pandas会直接丢弃时区部分,生成无时区感知(naive)的datetime对象。而dt.tz_convert()仅适用于带时区感知的datetime,对naive datetime调用该方法会导致转换逻辑异常。

修正代码:

  • 若输入字符串带时区标识,去掉format参数让Pandas自动解析:
df['timestamp'] = pd.to_datetime(df['timestamp']).dt.tz_convert('America/Mexico_City')
  • 若需指定格式,需包含时区部分:
STANDARD_DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S.%f%z'
df['timestamp'] = pd.to_datetime(df['timestamp'], format=STANDARD_DATETIME_FORMAT).dt.tz_convert('America/Mexico_City')
  • 若输入是无时区标识的UTC时间,需先标记时区再转换:
STANDARD_DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'
df['timestamp'] = pd.to_datetime(df['timestamp'], format=STANDARD_DATETIME_FORMAT).dt.tz_localize('UTC').dt.tz_convert('America/Mexico_City')

2. Pandas版本过旧导致时区规则滞后

你使用的Pandas 1.2.0是2021年的旧版本,其依赖的时区数据库(tzdata)未更新墨西哥城的最新规则——墨西哥城自2023年起取消夏令时,全年采用UTC-6,但旧版本tzdata可能仍保留夏令时逻辑,导致计算偏差。

解决方案:

升级Pandas及依赖的tzdata到最新稳定版本:

pip install --upgrade pandas tzdata

验证修正结果:

import pandas as pd

utc_time = pd.to_datetime('2024-04-24 10:00:00.000000+0000')
mexico_time = utc_time.tz_convert('America/Mexico_City')
print(mexico_time)  # 输出 2024-04-24 04:00:00-06:00,符合预期

内容的提问来源于stack exchange,提问作者Gabriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 11:41:07