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

如何将带多时区的datetime64[ns]类型时间转换为UTC时间

解决方法

你的原始时间列是无时区感知的datetime64[ns]类型,需要先为每个时间绑定对应的时区,再转换为UTC。

方法1:使用zoneinfo(Python 3.9+ 内置)

import pandas as pd
from zoneinfo import ZoneInfo

# 示例DataFrame
df = pd.DataFrame({
    'timestamp': pd.to_datetime(['2024-05-20 12:00:00', '2024-05-20 10:00:00']),
    'timezone': ['Asia/Shanghai', 'Europe/London']
})

# 为每个时间绑定对应时区并转换为UTC
df['utc_timestamp'] = df.apply(
    lambda row: row['timestamp'].tz_localize(ZoneInfo(row['timezone'])).tz_convert('UTC'),
    axis=1
)

方法2:使用pytz(兼容旧Python版本)

若Python版本低于3.9,可使用pytz库(需先安装:pip install pytz):

import pandas as pd
import pytz

# 示例DataFrame
df = pd.DataFrame({
    'timestamp': pd.to_datetime(['2024-05-20 12:00:00', '2024-05-20 10:00:00']),
    'timezone': ['Asia/Shanghai', 'Europe/London']
})

# 绑定时区并转UTC
df['utc_timestamp'] = df.apply(
    lambda row: row['timestamp'].tz_localize(pytz.timezone(row['timezone'])).tz_convert('UTC'),
    axis=1
)

关键说明

  • tz_localize():为无时区的datetime对象添加时区信息,使其成为时区感知的datetime。
  • tz_convert('UTC'):将带时区的datetime转换为UTC时间。
  • 若timezone列是偏移量格式(如+08:00),可直接用tz_localize(row['timezone']),无需额外调用ZoneInfo或pytz.timezone。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:34:58