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

Pandas处理时间列调用.dt访问器报AttributeError错误求助

问题原因
  • 你使用的timestamp列包含混合时区的时间值(部分为UTC+0时区,部分为UTC-4时区),适配Python3.6的低版本Pandas处理这类混合时区的时间数据时,调用pd.to_datetime()后无法生成统一的datetime64[ns, tz]类型Series,会退化为object类型,仅将每个元素单独存储为Python原生datetime对象
  • Pandas的.dt访问器仅支持原生datetime64类型的Series,不支持元素为datetime对象的object类型列,因此触发报错。你做的类型校验仅能证明列内元素都是Python原生datetime对象,不能证明Series是Pandas原生的datetime64类型,二者为不同概念。
解决方案

方案1:统一转换为UTC时间后再转目标时区(推荐)

调用pd.to_datetime()时指定utc=True参数,自动将所有不同时区的时间统一为UTC时区,输出标准的datetime64[ns, UTC]类型Series,即可正常使用.dt访问器:

import pandas as pd
# 替换为你实际使用的目标时区名,例如'Asia/Shanghai'
timezone_for_plot = "your_target_timezone"

df = pd.read_csv("my_csv_content_below.csv")
df["timestamp"] = pd.to_datetime(df["timestamp"], utc=True)
df["timestamp"] = df["timestamp"].dt.tz_convert(timezone_for_plot)

方案2:显式指定格式解析后统一时区

如果需要对时间格式做严格校验,可以指定format参数解析后再统一时区:

df["timestamp"] = pd.to_datetime(df["timestamp"], format="%Y-%m-%d %H:%M:%S%z", utc=True)
df["timestamp"] = df["timestamp"].dt.tz_convert(timezone_for_plot)

转换完成后可执行print(df["timestamp"].dtype)验证,输出为datetime64[ns, 你的目标时区]即为正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:24:03