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

如何在Pandas中将浮点数格式日期转为日期时间?转索引遇报错求解

问题解决方法

核心原因

  1. 格式字符串错误:你用了%m.%YYYY,但pandas的日期格式规则里,%Y已经代表4位年份,不需要重复写多个Y,错误的格式字符串会导致匹配失败。
  2. 脏数据存在:错误提示明确提到time data '9',说明你的日期列里存在单独的9这类不符合「月份.年份」格式的异常值。

解决步骤

  1. 排查并清理脏数据
    先查看列内所有唯一值,确认异常内容:

    print(df['你的日期列名'].unique())
    

    过滤掉不符合X.XXXX格式的行(X为1-2位数字,XXXX为4位年份):

    import re
    df = df[df['你的日期列名'].str.contains(r'^\d{1,2}\.\d{4}$', na=False)]
    
  2. 正确转换日期并设置索引
    方法一:指定正确格式转换(速度更快,适合格式规整的场景)

    df['你的日期列名'] = pd.to_datetime(df['你的日期列名'], format='%m.%Y')
    df.set_index('你的日期列名', inplace=True)
    

    方法二:让pandas自动识别格式(无需手动指定格式,适合数据格式统一的情况)

    df['你的日期列名'] = pd.to_datetime(df['你的日期列名'])
    df.set_index('你的日期列名', inplace=True)
    

补充说明

转换后的日期默认会取当月第一天(比如9.2017会转为2017-09-01),如果只需要保留月份维度的索引,可以将其转为周期类型:

df.index = df.index.to_period('M')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:15:41