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

如何将存在两种不同格式的日期列转换为统一格式并解决ValueError报错

问题原因

你当前的代码仅适配了斜杠分隔的%d/%m/%Y格式日期,遇到横杠分隔的%d-%m-%Y格式时无法匹配,因此抛出格式错误。

解决方案

方案1:使用pandas内置方法自动识别(更推荐)

pandas的to_datetime方法支持自动推断多种日期格式,无需手动判断分隔符:

import pandas as pd

# 统一转换为datetime格式,dayfirst=True指定日期为日/月/年顺序,匹配你的示例数据
superstore['Order Date'] = pd.to_datetime(superstore['Order Date'], dayfirst=True)
# 直接提取年月格式化输出
superstore['Order Month'] = superstore['Order Date'].dt.strftime('%m/%Y')

方案2:自定义解析函数兼容两种格式

如果你坚持用apply方法,可以在函数内增加异常处理,匹配两种格式:

import datetime

def parse_order_date(date_str):
    try:
        # 先尝试匹配斜杠格式
        return datetime.datetime.strptime(date_str, "%d/%m/%Y").strftime('%m/%Y')
    except ValueError:
        # 匹配失败时尝试横杠格式
        return datetime.datetime.strptime(date_str, "%d-%m-%Y").strftime('%m/%Y')

superstore['Order Month'] = superstore['Order Date'].apply(parse_order_date)

注意事项

两种方案都默认你的日期为「日-月-年」/「日/月/年」顺序,和你给出的13-01-2011示例(13为日)逻辑一致,不会出现日月混淆的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 08:39:03