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

将含多格式日期的DataFrame列转换为datetime类型

统一转换多种格式日期为datetime类型的解决方案

核心自动识别方案

直接使用pandas的pd.to_datetime()并启用混合格式识别,这是适配多格式日期最便捷的方式,能覆盖你提到的所有格式:

import pandas as pd

# 替换成你的DataFrame名称和日期列名
df['date_col'] = pd.to_datetime(df['date_col'], format='mixed', errors='coerce')
  • format='mixed':让pandas自动检测每行日期的格式,完美兼容YYYY-MM-DD、YYYY.MM.DD、YYYY Month DD这类格式
  • errors='coerce':将无法识别的无效日期转为NaT(缺失值),便于后续排查处理

手动兜底处理异常值

如果仍有部分日期转换失败,可以手动列出所有可能的格式,让pandas逐一尝试匹配:

# 枚举所有可能的日期格式
possible_formats = [
    '%Y-%m-%d',
    '%Y.%m.%d',
    '%Y %B %d'  # 对应'1968 October 26'这类带月份全称的格式
]

# 仅对未转换成功的行(NaT值)尝试不同格式
for fmt in possible_formats:
    mask = pd.isna(df['date_col'])
    df.loc[mask, 'date_col'] = pd.to_datetime(df.loc[mask, 'date_col'], format=fmt, errors='ignore')

验证转换结果

转换完成后,用以下代码确认效果:

# 查看列的数据类型,应为datetime64
print(df['date_col'].dtype)
# 统计转换失败的数量(即NaT的个数)
print(df['date_col'].isna().sum())
# 随机抽查部分转换结果
print(df['date_col'].sample(5))

注意事项

  • 确保pandas版本在2.0及以上,format='mixed'才支持;版本过低的话先升级:pip install --upgrade pandas
  • 若日期字符串含多余符号(比如括号、空格),可以先用str.replace()清洗后再转换,例如df['date_col'] = df['date_col'].str.replace(r'[()]+', '', regex=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:46:07