Продолжайте временные ряды периодически
У меня есть временной ряд со значениями, соответствующими одному периоду с продолжительностью 3 дня.
import pandas as pd
import numpy as np
index = pd.date_range(start='2018-01-01', periods=3, freq='D')
values = np.arange(index.shape[0])
df = pd.DataFrame(values, index)
Вывод df:
0
2018-01-01 0
2018-01-02 1
2018-01-03 2
Я хочу продолжить эту серию, скажем, 3 раза, т.е. последовательность [0, 1, 2] повторяется 3 раза, и индекс продолжается с существующей частотой. Есть ли элегантный способ сделать это с помощью pd.repeat
или что-то эквивалентное? Я только нашел способ жестко запрограммировать его.
n_repeats = 3
new_index = pd.date_range(start=df.index[0], periods=n_repeats*len(df), freq='D')
new_values = np.concatenate([df.values[:,0] for _ in range(n_repeats)])
new_df = pd.DataFrame(new_values, new_index)
Вывод new_df:
0
2018-01-01 0
2018-01-02 1
2018-01-03 2
2018-01-04 0
2018-01-05 1
2018-01-06 2
2018-01-07 0
2018-01-08 1
2018-01-09 2