python - 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
在不必编写这样的例程的情况下进行对我有利的工作。
解决方案
推荐阅读
- flutter - 处理来自 api 调用的列表
- bash - 当另一个以 bash 结束时运行并行进程
- java - 尽管构建没有错误,CS50 Android Track Filter 仍无法在设备中运行
- javascript - 如何将指纹(Touch ID)添加到 React-Native 应用程序?
- google-chrome-devtools - 开发工具 Chrome 错误“DevTools 无法解析 SourceMap”
- instagram - 我可以制作一个基于帐户或主题标签在我的电脑中下载和存储图像的程序吗?
- ansible - Ansible 创建两个文件
- api - YouTube API 未从已结束的广播事件中检索 liveChatId
- html - 检测 iframe 中的点击(React.js)
- android - 设备android上的React Native UI冻结