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

pandas自定义频率场景下date_range不包含区间末尾日期如何解决

问题原因

pd.date_range生成固定步长的日期序列时,若最后一次按步长累加的结果超过指定的结束日期,会自动丢弃该节点,仅返回所有小于等于结束日期的步长节点。closed/inclusive参数仅用于控制符合步长规则的首尾节点是否保留,无法解决步长跳过结束日期的场景。


解决方案

无需额外编写周期计算逻辑,仅需在生成序列后追加判断补入结束日期即可,修改后代码如下:

import pandas as pd
import datetime as dt
from datetime import date, timedelta
    
def getDates(sD, eD, f):
    # 解析起止日期
    sD = dt.datetime.strptime(sD, '%m/%d/%Y')
    eD = dt.datetime.strptime(eD, '%m/%d/%Y')
    sd_t = date(sD.year,sD.month,sD.day)
    ed_t = date(eD.year,eD.month,eD.day)
    # 频率映射
    freqDict = {'1h':'40D', '4h':'162D', '1d':'1000D'}
    dateVector = pd.date_range(sd_t, ed_t, freq = freqDict[f])
    # 补全结束日期
    if dateVector[-1] != ed_t:
        dateVector = dateVector.append(pd.DatetimeIndex([ed_t]))
    return dateVector

效果验证

调用getDates('01/01/2020', '01/01/2021', '4h')得到的结果将包含结束日期:

0   2020-01-01
1   2020-06-11
2   2020-11-20
3   2021-01-01

该改法不会破坏原有适配API请求上限的步长规则,最后一段不足步长的区间数据量也不会超过1000条的限制。


内容的提问来源于stack exchange,提问作者Aquiles Páez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:27:02