如何将DataFrame中的UTC时间戳转换为日期格式
解决AttributeError:只能对类datetime值使用.dt访问器
错误原因
你当前的代码逻辑有两个问题:
- 你在还没把
Time列转换成datetime类型时就用了.dt.strftime,这直接触发了AttributeError——.dt访问器只支持已经是datetime64类型的列。 - 代码里做了多余的操作:先格式化字符串再转datetime,完全是绕弯路。
正确处理步骤
第一步:将字符串列转为datetime类型
Pandas的pd.to_datetime可以直接识别2021-11-10 00:00:00 UTC这种带时区后缀的格式,直接转换即可:
df['Time'] = pd.to_datetime(df['Time'])
如果列里存在无效的日期字符串,可以添加errors='coerce'参数把无效值转为NaT(缺失的datetime值):
df['Time'] = pd.to_datetime(df['Time'], errors='coerce')
第二步:提取日期部分转为目标格式
如果你需要的是YYYY-MM-DD格式的字符串:
df['Time'] = df['Time'].dt.strftime('%Y-%m-%d')
如果想要保留datetime.date类型的对象(而非字符串),可以直接用:
df['Time'] = df['Time'].dt.date
完整示例代码
# 先转datetime类型 df['Time'] = pd.to_datetime(df['Time']) # 再转成目标日期格式 df['Time'] = df['Time'].dt.strftime('%Y-%m-%d')
内容的提问来源于stack exchange,提问作者Newton
相关产品推荐
相关产品推荐

