Python - 使用 freq 计算 2 个日期之间的 date/time 迭代次数

Python - Count number of date/time iterations between 2 dates using freq

我想弄清楚如何使用特定频率 (1D 3D 3H 15T) 计算 2 个日期之间的日期时间迭代次数

例如:

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 DataFrame。我需要计算自特定时间(以上)以来的行数。我考虑过从那时开始创建一个 DataFrame 并填补空白,然后像那样计算行数,但现在看来很愚蠢。

我最终使用的函数(经过解析)是这样的:

def periods(row, time_frame):
    start = datetime.datetime(2018, 8, 14, 9, 0, 0)
    end = row.name
    t = time_frame[-1:]
    n = int(re.findall('\d+',time_frame)[0])
    if t is 'H':
        freq = datetime.timedelta(hours=n)
    elif t is 'T':
        freq = datetime.timedelta(minutes=n)
    else:
        freq = datetime.timedelta(days=n)
    count = 0
    while start < end:
        start += freq
        count += 1
    return count

我从我的数据框(烛台)中这样调用它:

candlesticks['n'] = candlesticks.apply(lambda x: periods(x, candlesticks.index.freqstr), axis=1)

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

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