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

如何格式化非标准日期时间字符串以适配Pandas的pd.to_datetime()?

处理Pandas中不规范日期时间字符串的方法

针对你给出的示例(t = pd.Series(['20201023', '20201123', '20201012'])),这类无分隔符的8位日期字符串(格式为YYYYMMDD),直接用pd.to_datetime()即可自动解析,无需额外预处理:

import pandas as pd

t = pd.Series(['20201023', '20201123', '20201012'])
formatted_dates = pd.to_datetime(t)
print(formatted_dates)

输出会转为标准的datetime类型Series:

0   2020-10-23
1   2020-11-23
2   2020-10-12
dtype: datetime64[ns]

如果遇到更复杂的不规范格式,可按以下方式处理:

1. 指定格式参数提升解析效率

如果能明确日期字符串的固定格式,通过format参数直接定义解析规则,比自动识别更快。比如针对示例的YYYYMMDD格式:

formatted_dates = pd.to_datetime(t, format='%Y%m%d')

常用格式符参考:

  • %Y:4位年份
  • %m:2位月份
  • %d:2位日期
  • %H:24小时制小时
  • %M:分钟
  • %S:秒

2. 自动识别混合格式

如果Series中存在多种不同格式的日期字符串,无需手动拆分,开启infer_datetime_format=True可加速自动识别:

mixed_t = pd.Series(['20201023', '2020-11-23', '2020/10/12'])
formatted_dates = pd.to_datetime(mixed_t, infer_datetime_format=True)

3. 处理无效日期值

若存在无法解析的异常字符串,用errors参数控制处理逻辑:

  • errors='coerce':将无效值转为NaT(Pandas缺失日期类型)
  • errors='ignore':保留原字符串
  • errors='raise':直接抛出错误(默认行为)

示例:

t_with_invalid = pd.Series(['20201023', 'invalid_date', '20201012'])
formatted_dates = pd.to_datetime(t_with_invalid, errors='coerce')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:03:21