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

如何将CSV中分开的日期时间列转美东时区并拆分显示?

解决方案

核心思路:必须先合并date和time列生成完整的带时区时间戳,才能准确处理夏令时的时区转换,之后再拆分回独立的date和time列。

具体步骤与代码

import pandas as pd

# 1. 合并date与time列,生成带EET时区的完整时间戳
# 将date转为字符串,和time拼接成完整时间字符串
df['full_datetime'] = pd.to_datetime(df['date'].astype(str) + ' ' + df['time'])
# 给原始时间打上EET时区标签,ambiguous参数自动推断夏令时模糊时间
df['full_datetime'] = df['full_datetime'].dt.tz_localize('EET', ambiguous='infer')

# 2. 将时间转换为美东时区(自动处理夏令时EDT/EST)
df['full_datetime_est'] = df['full_datetime'].dt.tz_convert('America/New_York')

# 3. 拆分回独立的date和time列
df['date'] = df['full_datetime_est'].dt.date  # 得到美东时区对应的日期
df['time'] = df['full_datetime_est'].dt.strftime('%H:%M')  # 得到格式化的美东时间(HH:MM)

# 可选:清理中间生成的辅助列
df = df.drop(['full_datetime', 'full_datetime_est'], axis=1)

关键说明

  • 单独处理time列无法完成正确时区转换:夏令时偏移依赖具体日期,只有合并date和time后,才能让pandas准确判断是否应用夏令时规则。
  • 避免手动计算时差:使用America/New_York时区标识,pandas会自动切换EST(冬令时,与EET差7小时)和EDT(夏令时,与EET差6小时)的偏移。
  • 纠正之前的错误操作:
    • 不要直接给time列用tz_localize,这会错误给时间打上无关时区标签,且无法关联日期做偏移。
    • dt.time只能提取原始时间,不会做时区转换,必须基于完整时区时间戳处理后再提取时间部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:20:20