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

Python处理pandas数据框两种混合日期格式并统一为DD/MM/YYYY的问题

多格式日期列统一解析解决方案

问题根因

你当前代码报错的核心原因有两个:

  • 仅将日期中的空格替换为/,没有处理原数据中存在的-分隔符,导致类似2021-10-08 00:00:00格式的日期处理后变成2021-10-08/00:00:00,分隔符不统一无法匹配指定格式
  • 仅指定了单一的%d/%m/%Y/%H:%M解析规则,遇到YYYY/MM/DD HH:MM格式的日期时无法匹配

解决方法

步骤1:统一日期分隔符

先把所有日期中的-和空格都统一替换为/,避免分隔符混乱:

# 同时替换横杠和空格为斜杠,正则匹配一次处理完成
df['Appointment Date'] = df['Appointment Date'].str.replace(r'[- ]', '/', regex=True)
df['Attended Date'] = df['Attended Date'].str.replace(r'[- ]', '/', regex=True)

步骤2:多格式兼容解析

提供两种实现方案,可根据需求选择:

方案1:自动推断格式(适合大部分场景,代码更简洁)

利用pandas内置的日期推断能力,同时指定dayfirst=True优先匹配日/月/年的格式,避免月和日识别颠倒:

df['Appointment Date'] = pd.to_datetime(df['Appointment Date'], dayfirst=True, infer_datetime_format=True).dt.strftime('%d/%m/%Y')
df['Attended Date'] = pd.to_datetime(df['Attended Date'], dayfirst=True, infer_datetime_format=True).dt.strftime('%d/%m/%Y')

方案2:显式兜底解析(适合对准确性要求极高的场景,无推断误差)

自定义解析函数,按优先级尝试两种格式的解析,完全避免自动推断可能出现的识别错误:

def parse_custom_date(date_str):
    # 优先匹配DD/MM/YYYY/HH:MM格式
    try:
        return pd.to_datetime(date_str, format="%d/%m/%Y/%H:%M")
    except ValueError:
        # 匹配失败后尝试YYYY/MM/DD/HH:MM格式
        return pd.to_datetime(date_str, format="%Y/%m/%d/%H:%M")

# 应用到两个日期列
df['Appointment Date'] = df['Appointment Date'].apply(parse_custom_date).dt.strftime('%d/%m/%Y')
df['Attended Date'] = df['Attended Date'].apply(parse_custom_date).dt.strftime('%d/%m/%Y')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:36:03