首页 > 解决方案 > date_range 将不包括自定义频率的最后一个间隔日期

问题描述

我想根据我选择的频率创建一个具有给定固定间距的日期向量。到目前为止,这是我得到的:

import pandas as pd
import datetime as dt
from datetime import date, timedelta
    
def getDates(sD, eD, f):
    # creating the datetime object to later on make the date vector
    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)   # start date
    ed_t = date(eD.year,eD.month,eD.day)   # end date
    # we hardcode a frequency dictionary for the frequencies and spacing that 
    # date vectors are going to have.
    freqDict = {'1h':'40D', '4h':'162D', '1d':'1000D'}
    dateVector = pd.date_range(sd_t, ed_t, freq = freqDict[f])
    return dateVector

正如你所看到的,我只有 3 个我感兴趣的频率。它们之间的间距效果很好,我必须玩 API 限制,我为请求设置的限制是 1000。这就是我选择这些自定义间距的原因在日期之间,以便根据这些日期所指的频率和 API 请求限制允许尽可能多的数据点。

不幸的是,在某些情况下,我无法在 dateVector 上获得最终日期。如果使用这些输入运行此函数:

getDates('01/01/2020', '01/01/2021', '4h')

我得到了这个结果,它缺少数组上的最终日期('01/01/2021'):

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

我想过使用该closed = 参数,但它没有让我到达我想要的地方。

我想到的解决方法包括使用periods而不是freq,并根据开始日期和结束日期之间的距离(以天为单位)动态计算周期。但是我想知道我是否可以date_range在不必编写这样的例程的情况下进行对我有利的工作。

标签: pythonpython-3.xpandasdate-range

解决方案


推荐阅读