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

pd.date_range传入下划线分隔日期串报无法转换为Timestamp错误

报错原因

pd.date_range 自动解析日期字符串时,默认支持日期与时间用空格分隔的%Y-%m-%d %H:%M格式,无法直接识别你用下划线分隔日期、时间的%Y-%m-%d_%H:%M格式,因此抛出无法转换为Timestamp的ValueError。

修复方案

方案1:直接传入datetime对象,规避字符串解析(推荐)

这是最稳妥的写法,不需要提前把起止时间转成格式字符串,pd.date_range原生支持datetime类型的起止参数,从根源上避免字符串解析不兼容的问题。
注意你原来的代码里f字符串存在不必要的断行,会触发语法错误,修正后完整代码如下:

from datetime import datetime
import pandas as pd

beginning_time = datetime(year, month, day, hour, minute)
end_time = datetime(year, month, day_end, hour_end, minute)

# 直接传datetime对象生成时间序列,不需要提前转字符串
timerange_HRRR = pd.date_range(start=beginning_time, end=end_time, freq='1H')
# 生成文件路径时,再按文件名需要的下划线格式批量转字符串
timerange_HRRR_str = timerange_HRRR.strftime("%Y-%m-%d_%H:%M")

grib_file_2d_base = f'{wrf_cases_dir}{wrfoutdir}/wrf2d_{domain}_' + timerange_HRRR_str + '.grib2' 

for fpath in grib_file_2d_base:
    print(fpath)

方案2:传入字符串时显式指定日期格式

如果业务逻辑要求必须传入字符串形式的起止时间,在调用pd.date_range时通过format参数显式声明你使用的日期格式,和你生成字符串时用的strftime格式保持一致即可:

timerange_HRRR = pd.date_range(
    start=beginning_time_str,
    end=end_time_str,
    freq='1H',
    format="%Y-%m-%d_%H:%M"
)

补充:你之前用空格分隔的日期字符串能正常运行,本质是因为该格式属于pandas默认兼容的通用日期写法,不需要额外声明格式就能自动解析;下划线分隔的写法不属于通用日期格式,必须显式指定格式,或者直接绕开字符串解析步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:09:25