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

如何将Pandas DataFrame中的月日对象列转换为日期格式

问题解决:pandas日期转换越界错误

错误原因

  1. pd.to_datetime解析Dec-01时,默认推断为月-日格式,年份自动填充为公元1年(1 CE),而pandas的datetime64[ns]类型仅支持1677-09-21至2262-04-18的日期范围,因此触发越界错误。
  2. 代码存在语法错误:strftime(%d-%b')缺少开头的单引号,正确写法是strftime('%d-%b')。

解决方案

根据原始数据的实际含义,分两种情况处理:

情况1:Dec-01表示2001年12月(月-年格式)

指定解析格式为%b-%y(月份缩写-两位年份),让pandas正确识别年份:

import pandas as pd

# 正确解析为datetime类型
df['column'] = pd.to_datetime(df['column'], format='%b-%y')
# 若需要转换为日-月格式的字符串(如01-Dec)
df['column'] = df['column'].dt.strftime('%d-%b')

注:%y会将两位年份01默认转换为2001,若需指定其他世纪,可手动调整年份(如df['column'] = df['column'] + pd.DateOffset(years=100))。

情况2:Dec-01表示12月1日(月-日格式)

手动补充年份,避免pandas填充无效的公元1年:

import pandas as pd
from datetime import datetime

# 方法1:拼接固定年份后解析
df['column'] = pd.to_datetime(df['column'] + '-2024', format='%b-%d-%Y')
# 方法2:用default参数指定默认年份(pandas 2.0+支持)
df['column'] = pd.to_datetime(df['column'], infer_datetime_format=True, default=datetime(2024, 1, 1))
# 转换为日-月格式字符串
df['column'] = df['column'].dt.strftime('%d-%b')

额外提示

如果不需要将日期转为字符串,仅需保留datetime类型,直接执行pd.to_datetime并指定正确格式即可,无需dt.strftime步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:30:56