如何格式化非标准日期时间字符串以适配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
相关产品推荐
相关产品推荐

