Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—使用freq计算两个日期之间的日期/时间迭代次数_Python_Python Datetime - Fatal编程技术网

Python—使用freq计算两个日期之间的日期/时间迭代次数

Python—使用freq计算两个日期之间的日期/时间迭代次数,python,python-datetime,Python,Python Datetime,我试图找出如何使用特定频率(1D 3D 3H 15T)计算两个日期之间的日期时间迭代次数 例如: freq = '3H' start = datetime.datetime(2018, 8, 14, 9, 0, 0) end= datetime.datetime(2018, 8, 15) total = func(start, end, freq) 如果freq='3H'总数将是5 如果freq='30T'总数将为30 func会是什么样子 编辑 我把我最初的问题留在那里,并添加我最初没有添加

我试图找出如何使用特定频率(1D 3D 3H 15T)计算两个日期之间的日期时间迭代次数

例如:

freq = '3H'
start = datetime.datetime(2018, 8, 14, 9, 0, 0)
end= datetime.datetime(2018, 8, 15)
total = func(start, end, freq)
如果
freq='3H'
总数将是
5

如果
freq='30T'
总数将为
30

func会是什么样子

编辑 我把我最初的问题留在那里,并添加我最初没有添加的细节,以使事情尽可能简单

在我正在处理的代码中,我有一个带有DateTimeIndex的Pandas数据帧。我需要计算自特定时间(如上)以来的行数。我曾想过从那时开始创建一个数据帧,填补空白,然后像那样计算行数,但现在这似乎很愚蠢

我最终使用的函数(解析时)是:

使用
datetime
库中的模块,从那里基本上与比较数字相同

from datetime import timedelta

freq = timedelta(hours=3)

def periods(frequency, start, end):
    count = 0
    while start < end:
        start += frequency
        count += 1
    return count

p = periods(freq, start, end)

print(p)
>> 5
从日期时间导入时间增量
频率=时间增量(小时=3)
def周期(频率、开始、结束):
计数=0
开始<结束时:
开始+=频率
计数+=1
返回计数
p=周期(频率、开始、结束)
印刷品(p)
>> 5

我考虑了timedelta,但我需要能够从使用小时/天/分钟/秒动态切换。我可以解析传入的字符串,但我希望有一种更优雅的方法来解析。
candlesticks['n'] = candlesticks.apply(lambda x: periods(x, candlesticks.index.freqstr), axis=1)
from datetime import timedelta

freq = timedelta(hours=3)

def periods(frequency, start, end):
    count = 0
    while start < end:
        start += frequency
        count += 1
    return count

p = periods(freq, start, end)

print(p)
>> 5