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

如何将Pandas DataFrame整列时区从以色列时区转换为UTC?

将Pandas DataFrame的Time列从以色列时区转换为UTC的高效方法

首先要明确:单独处理Time列是行不通的,时区转换需要完整的日期信息来应对夏令时这类特殊场景,所以核心思路是先把Date和Time合并成带时区标记的datetime对象,再转换到UTC。结合你需要多次循环执行的需求,下面是最简单且高效的实现方案:

步骤说明与代码示例

我们会用Pandas的矢量化操作(dt访问器)来处理数据,比逐行遍历效率高得多;同时预先定义时区对象,避免每次循环重复创建,进一步提升性能。

方法1:兼容全Python版本(使用pytz)

import pandas as pd
import pytz

# 预先定义时区对象,放在循环外部,重复执行时避免重复初始化
israel_tz = pytz.timezone('Asia/Jerusalem')
utc_tz = pytz.utc

# 你的循环逻辑
for your_loop_condition:
    # 1. 合并Date与Time列,转换为带以色列时区的datetime类型
    df['datetime_with_tz'] = pd.to_datetime(df['Date'] + ' ' + df['Time']).dt.tz_localize(israel_tz, ambiguous='infer')
    # 2. 将带时区的datetime转换为UTC时区
    df['utc_datetime'] = df['datetime_with_tz'].dt.tz_convert(utc_tz)
    
    # 可选操作:如果需要拆分出UTC的日期和时间列
    df['UTC_Date'] = df['utc_datetime'].dt.date
    df['UTC_Time'] = df['utc_datetime'].dt.time

方法2:Python3.9+推荐(使用标准库zoneinfo)

如果你的Python版本在3.9及以上,直接用标准库的zoneinfo更简洁,无需额外安装依赖:

import pandas as pd
from zoneinfo import ZoneInfo

# 预先定义时区对象
israel_tz = ZoneInfo('Asia/Jerusalem')
utc_tz = ZoneInfo('UTC')

# 循环内操作与上述一致
for your_loop_condition:
    df['datetime_with_tz'] = pd.to_datetime(df['Date'] + ' ' + df['Time']).dt.tz_localize(israel_tz, ambiguous='infer')
    df['utc_datetime'] = df['datetime_with_tz'].dt.tz_convert(utc_tz)
    # 可选拆分UTC日期和时间列
    df['UTC_Date'] = df['utc_datetime'].dt.date
    df['UTC_Time'] = df['utc_datetime'].dt.time

关键细节解释

  • 时区选择:用Asia/Jerusalem而非固定偏移量,因为以色列实行夏令时,这个时区ID会自动处理偏移变化,避免时间转换错误。
  • ambiguous='infer'参数:用来处理夏令时切换时的模糊时间(比如时钟回拨导致的重复时间),Pandas会根据上下文自动推断正确的时间戳。
  • 高效性:矢量化操作比逐行处理快几个数量级,预先定义时区对象避免了每次循环的重复初始化,非常适合多次执行的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:46:32