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

Pandas如何将瑞典本地时间转UTC?解决NonExistentTimeError

解决Pandas中瑞典时区转UTC时的NonExistentTimeError问题

你遇到的错误是因为2022年3月27日是瑞典夏令时切换日:当地时间凌晨1点过后,时钟会直接跳到3点,所以2022-03-27 02:00:00这个时间在Europe/Stockholm时区里根本不存在,这才触发了NonExistentTimeError。

先纠正你代码里的笔误:pd.to_dataframe应该是pd.to_datetime,下面是不用删除时间戳的解决方法:

方法1:将不存在的时间向前偏移

把不存在的时间直接移到下一个存在的时间点(这里就是03:00),代码如下:

import pandas as pd

# 转换为datetime类型
df['Time'] = pd.to_datetime(df['Time'])
# 本地化时区并处理不存在的时间
df['Time'] = df['Time'].dt.tz_localize('Europe/Stockholm', nonexistent='shift_forward')
# 转换为UTC时区
df['Time_UTC'] = df['Time'].dt.tz_convert('UTC')

处理后,原来的2022-03-27 02:00:00会被调整为2022-03-27 03:00:00+02:00,转成UTC就是2022-03-27 01:00:00+00:00。

方法2:将不存在的时间向后偏移

把不存在的时间移到上一个存在的时间点(这里就是01:00),只需修改nonexistent参数:

df['Time'] = df['Time'].dt.tz_localize('Europe/Stockholm', nonexistent='shift_backward')

此时2022-03-27 02:00:00会被调整为2022-03-27 01:00:00+01:00,转成UTC是2022-03-27 00:00:00+00:00。

方法3:自动推断合理时间

让Pandas根据前后时间戳自动推断最合适的时区偏移,调整不存在的时间:

df['Time'] = df['Time'].dt.tz_localize('Europe/Stockholm', nonexistent='infer')

这种方式会基于时间序列的连续性,给出最符合逻辑的调整结果。

以上三种方法都能保留所有数据,不需要删除任何时间戳,你可以根据业务需求选择合适的处理方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:01:14