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
我想弄清楚如何使用特定频率 (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