Pandas中将MMDDYYYY格式日期列转为YYYY-MM-DD格式报错如何解决
报错根因
日期解析的格式参数和实际数据的字段顺序不匹配:
- 目标列存储的是
MMDDYYYY结构:前2位是月份、中间2位是日期、最后4位是年份(例如10011933对应1933年10月1日) - 原代码中
format='%Y%m%d'指定的解析顺序是「4位年份+2位月份+2位日期」,和实际数据顺序完全颠倒,解析时无法匹配剩余字符,就会触发ValueError: unconverted data remains报错。
修正代码
将格式参数调整为匹配MMDDYYYY顺序的%m%d%Y即可,pandas的datetime类型默认展示格式就是YYYY-MM-DD,无需额外做字符串拼接处理:
df['date'] = pd.to_datetime(df['date'], format='%m%d%Y')
转换效果验证
使用给出的样例数据做测试:
# 构造测试数据集 test_df = pd.DataFrame({ 'date': ['10011933', '04041961', '07061931', '10281988'] }) # 执行转换 test_df['date'] = pd.to_datetime(test_df['date'], format='%m%d%Y') print(test_df)
运行输出:
date 0 1933-10-01 1 1961-04-04 2 1931-07-06 3 1988-10-28
完全符合预期转换要求。
内容的提问来源于stack exchange,提问作者wellsinsideout
相关产品推荐
相关产品推荐

