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

Pandas DataFrame 按行对应时区将UTC时间转换为本地时间的实现方法

实现方案

核心思路

利用Pandas的逐行操作能力,先将UTC时间列转换为带时区感知的时间类型,再按每行指定的时区做转换。

完整代码

import pandas as pd
import pytz

# 构造测试数据
ids = 1
timezones = ['America/Los_Angeles', 'Europe/Paris', 'America/New_York']
utc_time = ['2020-09-03 19:36:18.534', '2020-09-03 19:36:18.534', '2020-09-03 19:36:18.534']
df = pd.DataFrame({'id':ids,
                   'timezone':timezones,
                   'utc_time':utc_time})

# 1. 将字符串格式的UTC时间转换为带UTC时区标识的datetime类型
df['utc_time'] = pd.to_datetime(df['utc_time']).dt.tz_localize('UTC')

# 2. 逐行根据对应时区转换为本地时间
df['local_time'] = df.apply(
    lambda row: row['utc_time'].tz_convert(row['timezone']),
    axis=1
)

print(df)

输出结果

id             timezone                       utc_time                        local_time
0   1  America/Los_Angeles 2020-09-03 19:36:18.534000+00:00 2020-09-03 12:36:18.534000-07:00
1   1         Europe/Paris 2020-09-03 19:36:18.534000+00:00 2020-09-03 21:36:18.534000+02:00
2   1     America/New_York 2020-09-03 19:36:18.534000+00:00 2020-09-03 15:36:18.534000-04:00

注意事项

  • 若utc_time列已经是带UTC时区标识的datetime类型,可跳过第一步的tz_localize操作
  • 若需要将转换后的本地时间输出为无时区的字符串格式,可将第二步的lambda逻辑调整为:
    lambda row: row['utc_time'].tz_convert(row['timezone']).strftime('%Y-%m-%d %H:%M:%S.%f')
  • 需确保timezone列的取值为符合IANA标准的时区名称,示例中的时区均符合要求无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:42:03