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

如何将pandas DataFrame的object类型日期列转换为datetime格式

问题原因

转换失败的核心原因是使用的格式字符串和实际的日期格式不匹配:你给出的日期样例中日、月份缩写、年份之间用-分隔,但之前用的%d%b%y格式串没有包含分隔符,无法识别原有格式。另外%-d是日期格式化输出时用于去除前导零的参数,不适用于日期解析场景,写了也不会生效。


解决方法

  1. 优先使用匹配的格式串直接转换,代码如下:
import pandas as pd

df['DisbursementDate'] = pd.to_datetime(
    df['DisbursementDate'], 
    format='%d-%b-%y',  # 格式串和实际日期的分隔符、占位符完全对应
    errors='raise' # 转换出错时直接抛出异常,方便定位问题
)
  1. 如果转换时出现月份缩写识别报错,一般是当前系统locale为中文,无法识别英文月份缩写导致,按如下代码临时切换locale即可:
import locale
# 保存原有locale配置
old_locale = locale.getlocale(locale.LC_TIME)

# 切换到英文locale,根据你的系统二选一即可
# Windows系统用:
locale.setlocale(locale.LC_TIME, 'English_US')
# Mac/Linux系统用:
# locale.setlocale(locale.LC_TIME, 'en_US.UTF-8')

# 执行日期转换
df['DisbursementDate'] = pd.to_datetime(df['DisbursementDate'], format='%d-%b-%y')

# 恢复原有locale配置
locale.setlocale(locale.LC_TIME, old_locale)
  1. 转换完成后直接按该列排序即可:
# 按日期升序排序,调整ascending为False可改为降序
df = df.sort_values(by='DisbursementDate', ascending=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:24:04