指定infer_datetime_format=True仍触发pandas日期解析警告的问题
解决Pandas日期解析警告问题
警告原因分析
- 你指定的
format="%d/%m/%y"是两位年份格式,但数据中存在31/12/2015这种四位年份的日期,格式不匹配。 format参数优先级高于infer_datetime_format=True,Pandas会优先尝试用你指定的格式解析,失败后才会自动推断,这个过程就会触发警告。- 你的代码生成了
data_date但未替换原data['date']列,后续set_index使用的还是原始字符串日期,等于没完成日期转换。
解决方案
方案1:明确指定正确的日期格式
因为数据是DD/MM/YYYY格式,把format参数改成%d/%m/%Y(大写Y对应四位年份),同时替换原日期列:
data = pd.read_csv('index.csv') # 替换原date列为解析后的datetime类型 data['date'] = pd.to_datetime(data['date'], dayfirst=True, format="%d/%m/%Y") data.set_index('date', inplace=True) data = data.asfreq('b')
方案2:让Pandas自动推断格式(适合混合格式场景)
如果数据中存在多种日期格式,直接去掉format参数,保留dayfirst=True和infer_datetime_format=True即可:
data = pd.read_csv('index.csv') data['date'] = pd.to_datetime(data['date'], dayfirst=True, infer_datetime_format=True) data.set_index('date', inplace=True) data = data.asfreq('b')
内容的提问来源于stack exchange,提问作者Sk Hossen
相关产品推荐
相关产品推荐

