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

pd.to_datetime无法处理类似'10/30/2022 7:00:00 AM +01:00'的时间值

解决pandas日期字符串转换为带时区ISO格式的问题

问题分析

你遇到的AttributeError大概率是因为pd.to_datetime解析时未正确识别带时区的日期格式,导致生成的Series并非datetime类型;另外你原代码的格式化字符串未包含时区部分,也无法得到目标格式2022-10-30T00:00:00+02:00。

解决方案

1. 正确解析带时区的日期字符串

显式指定日期格式,确保pandas准确解析包含AM/PM及时区偏移的字符串:

import pandas as pd

df = pd.DataFrame(['10/30/2022 7:00:00 AM +01:00', '10/31/2022 12:00:00 AM +01:00',
       '10/30/2022 3:00:00 PM +01:00', '10/30/2022 9:00:00 PM +01:00',
       '10/30/2022 5:00:00 PM +01:00', '10/30/2022 10:00:00 PM +01:00',
       '10/30/2022 3:00:00 AM +01:00', '10/30/2022 2:00:00 AM +02:00',
       '10/30/2022 10:00:00 AM +01:00', '10/30/2022 4:00:00 PM +01:00',
       '10/30/2022 1:00:00 AM +02:00'], columns = ['Date'])

# 解析日期,指定匹配格式
df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y %I:%M:%S %p %z')

这里的format参数对应你的日期结构:

  • %m:两位月份
  • %d:两位日期
  • %Y:四位年份
  • %I:12小时制的小时数
  • %M:分钟
  • %S:秒
  • %p:AM/PM标识
  • %z:时区偏移(如+01:00)

2. 转换到目标时区(统一为+02:00)

如果要将所有日期统一转换到UTC+2时区,使用tz_convert:

# 转换到+02:00时区
df['Date'] = df['Date'].dt.tz_convert('+02:00')

3. 格式化为目标ISO字符串

使用dt.isoformat()直接生成符合要求的格式,无需手动拼接时区:

df['Date'] = df['Date'].dt.isoformat()

最终结果

执行完上述步骤后,df['Date']的输出会是类似2022-10-30T06:00:00+02:00的格式,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:25:53