[英]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.