簡體   English   中英

Python - 使用 freq 計算 2 個日期之間的日期/時間迭代次數

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

我想弄清楚如何使用特定頻率(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' total 將為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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM