Продолжайте временные ряды периодически

У меня есть временной ряд со значениями, соответствующими одному периоду с продолжительностью 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

0 ответов

Другие вопросы по тегам