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

Python Pandas中带时区偏移的时间戳列转换最优方案

Pandas 带时区时间戳列处理方案

首先确保目标列被解析为**带时区感知(tz-aware)**的datetime类型:

import pandas as pd

# 时间戳列列表
ts_lst = ["SLA_START_TIME", "SLA_STOP_TIME", "RES_START_TIME", "RES_STOP_TIME"]

# 解析字符串为带时区的datetime
for col in ts_lst:
    df[col] = pd.to_datetime(df[col], infer_datetime_format=True)

以下是针对每个需求的最优实现:

1. 转换为无时区偏移的UTC时间

先将原时间转换为UTC时区,再移除时区标记,得到无时区感知的UTC时间:

for col in ts_lst:
    df[f"{col}_UTC_naive"] = df[col].dt.tz_convert("UTC").dt.tz_localize(None)

2. 转换为无时区偏移的EST时间

推荐使用America/New_York时区(自动处理夏令时切换,覆盖EST/EDT),转换后移除时区标记:

for col in ts_lst:
    df[f"{col}_EST_naive"] = df[col].dt.tz_convert("America/New_York").dt.tz_localize(None)

注:若需强制使用固定UTC-5偏移的标准EST(不处理夏令时),可替换为Etc/GMT+5

3. 直接移除时区偏移并原样存储

保留原时间的数值部分,仅移除时区标记,得到无时区感知的datetime:

for col in ts_lst:
    df[f"{col}_raw_no_offset"] = df[col].dt.tz_localize(None)

4. 将UTC时区转换为EST时区

若原时间已为UTC时区,直接转换为带时区感知的美国东部时间;若未明确时区,先转UTC再转换:

for col in ts_lst:
    # 确保原时间为UTC时区,再转换为美国东部时区(带时区标记)
    df[f"{col}_UTC_to_EST_tzaware"] = df[col].dt.tz_convert("America/New_York")

5. 移除时区偏移

与需求3逻辑一致,直接移除时区标记,保留原时间数值:

for col in ts_lst:
    df[f"{col}_no_tz"] = df[col].dt.tz_localize(None)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:46:06