Я пытаюсь выяснить, как рассчитать количество итераций дат и времени между двумя датами, используя заданную частоту c (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
как бы весело c выглядело бы?
РЕДАКТИРОВАТЬ Я оставляю свой исходный вопрос там и добавляю детали, которые я не смог добавить изначально, чтобы сделать вещи максимально простыми.
В коде, над которым я работаю, у меня есть Pandas DataFrame с DateTimeIndex. Мне нужно было рассчитать количество строк, начиная с указанного времени c (выше). Я думал о создании 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)