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

Pandas转Datetime为%m/%d/%Y格式时.dt访问器报错如何解决

问题根因

核心问题出在pd.to_datetime的参数使用上:
errors='ignore'的逻辑不是“跳过无法解析的坏值、转换能解析的正常值”,而是只要列中存在任意一个无法按规则解析为时间类型的值,整列转换操作会直接终止,返回原始的object类型数据,不会做任何类型转换。
你看到的2017-11-10 00:00:00这类值本质是字符串,不是Pandas认可的datetime64类型,因此调用.dt访问器时会触发类型错误。

解决步骤
  • 第一步:正确完成日期类型转换,将errors='ignore'替换为errors='coerce',把无法解析的异常值统一标记为NaT(时间类型缺失值)。
    如果列内原始值是Unix秒级时间戳,使用以下代码:
    df6['beginn'] = pd.to_datetime(df6['beginn'], unit='s', errors='coerce')
    

    注意:如果列内原始值本身就是2017-11-10 00:00:00格式的日期字符串,不是秒级时间戳,必须去掉unit='s'参数,否则会解析出完全错误的时间,对应代码为:

    df6['beginn'] = pd.to_datetime(df6['beginn'], errors='coerce')
    
    转换完成后可以执行print(df6['beginn'].dtype)确认输出为datetime64[ns],如果需要定位转换失败的异常条目,可以执行:
    print(df6[df6['beginn'].isna()])
    
    对异常值做手动修正或者直接保留为缺失值即可。
  • 第二步:确认列类型为datetime类型后,执行格式化代码,即可得到%m/%d/%Y格式的日期:
    df6['beginn'] = df6['beginn'].dt.strftime('%m/%d/%Y')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:09:20