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

如何使用pandas.to_datetime转换两种日期格式列并解决解析错误?

解决Pandas日期列转换问题

针对你提到的两种日期格式,最稳妥的方法是使用pandas.to_datetime()函数,它既支持自动解析常见格式,也能通过指定格式字符串精准匹配,同时可以处理异常数据避免报错。

方法1:自动解析(推荐优先尝试)

pd.to_datetime()自带的解析器通常能识别这两种格式,代码简单直接:

import pandas as pd

# 假设你的数据框是df,两列分别为col1(带时间)和col2(仅日期)
df['col1'] = pd.to_datetime(df['col1'])
df['col2'] = pd.to_datetime(df['col2'])

方法2:指定格式字符串(自动解析失效时用)

如果自动解析出现报错,可以明确指定格式规则,对应你的两种格式:

  • 对于Jan 17, 2023 at 12:22 PM,格式字符串为%b %d, %Y at %I:%M %p
  • 对于May 2, 2018,格式字符串为%b %d, %Y

代码示例:

# 处理带时间的列
df['col1'] = pd.to_datetime(df['col1'], format="%b %d, %Y at %I:%M %p")
# 处理仅日期的列
df['col2'] = pd.to_datetime(df['col2'], format="%b %d, %Y")

格式字符串说明:

  • %b:缩写月份(如Jan、May)
  • %d:两位数字的日期(不足两位会自动补零,比如2会识别为02)
  • %Y:四位数字的年份
  • %I:12小时制的小时数
  • %M:分钟数
  • %p:AM/PM标识

解决ParserError: day is out of range for month: 0报错

这个错误说明你的数据中存在无效日期(比如出现了"0号"这种不存在的日期),可以通过errors参数处理:

  • errors='coerce':将无效日期转为NaT(Pandas的缺失日期标识),后续可以筛选出这些异常行排查
  • errors='ignore':保留原始字符串,不做转换

示例代码:

# 转换时强制处理异常值
df['col1'] = pd.to_datetime(df['col1'], format="%b %d, %Y at %I:%M %p", errors='coerce')
# 查看所有无效日期的行
invalid_rows = df[df['col1'].isna()]
print(invalid_rows)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:30:19