如何在Pandas中将浮点数格式日期转为日期时间?转索引遇报错求解
问题解决方法
核心原因
- 格式字符串错误:你用了
%m.%YYYY,但pandas的日期格式规则里,%Y已经代表4位年份,不需要重复写多个Y,错误的格式字符串会导致匹配失败。 - 脏数据存在:错误提示明确提到
time data '9',说明你的日期列里存在单独的9这类不符合「月份.年份」格式的异常值。
解决步骤
排查并清理脏数据
先查看列内所有唯一值,确认异常内容: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)]正确转换日期并设置索引
方法一:指定正确格式转换(速度更快,适合格式规整的场景)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
相关产品推荐
相关产品推荐

