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

为何Pandas停止解析mm/dd/yyyy格式的日期字符串?

嘿,我来帮你搞定这个Pandas日期解析的问题!你提到的Pandas似乎停止解析mm/dd/yyyy格式日期的情况,其实并不是官方停止支持了——大概率是日期解析的默认推断逻辑和你的预期不匹配,尤其是当日期里的日大于12时,Pandas会因为无法识别非法月份而报错。下面我针对你给出的三个案例逐个给出解决方案:

Case 1: pd.to_datetime 解析失败

问题核心在于,当你传入像11/13/2017这样的字符串时,Pandas默认的自动推断会把斜杠分隔的日期优先当成dd/mm/yyyy,但13不可能是月份,所以直接报错。解决办法就是显式告诉Pandas日期格式:

import pandas as pd
# 用format参数明确指定为月/日/年格式
pd.to_datetime(['05/05/2017', '11/13/2017'], format='%m/%d/%Y')

如果你不确定所有日期的格式,但确定是“月在前、日在后”,也可以用dayfirst=False参数(不过指定format是最稳妥的方式,避免歧义):

pd.to_datetime(['05/05/2017', '11/13/2017'], dayfirst=False)

Case 2: pd.date_range 日期格式问题

你给出的示例代码pd.date_range('1/1/2000', periods=1000)其实默认是可以正常解析的,但如果起始日期是类似11/13/2000这种日大于12的mm/dd/yyyy格式,就会和Case1一样报错。解决方式有两种:

  1. 显式指定format参数:
import pandas as pd
import numpy as np
# 明确告诉Pandas起始日期是月/日/年格式
longer_ts = pd.Series(np.random.randn(1000), index=pd.date_range('11/13/2000', periods=1000, format='%m/%d/%Y'))
  1. 直接传入datetime对象,彻底跳过字符串解析环节:
from datetime import datetime
import pandas as pd
import numpy as np
longer_ts = pd.Series(np.random.randn(1000), index=pd.date_range(datetime(2000, 11, 13), periods=1000))

Case 3: Series日期切片问题

从你没写完的代码来看,应该是想用mm/dd/yyyy格式的字符串去切片带datetime索引的Series,结果因为格式解析不匹配导致失败。这里推荐两种可靠的切片方式:

  1. 直接用datetime对象切片,完全避免字符串解析歧义:
from datetime import datetime
import pandas as pd
import numpy as np

# 先创建带datetime索引的Series
dates = pd.date_range('1/1/2000', periods=1000)
longer_ts = pd.Series(np.random.randn(1000), index=dates)
# 用datetime对象指定切片范围
slice_result = longer_ts[datetime(2000, 5, 5):datetime(2000, 11, 13)]
  1. 如果一定要用字符串切片,先把字符串转成标准datetime对象再操作:
# 先将mm/dd/yyyy格式的字符串转成datetime
start_date = pd.to_datetime('05/05/2000', format='%m/%d/%Y')
end_date = pd.to_datetime('11/13/2000', format='%m/%d/%Y')
# 用转换后的datetime对象切片
slice_result = longer_ts[start_date:end_date]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:46:41