2016-11-16 2 views
1

Мне нужно создать набор данных из моего временного ряда, который содержит образцы, сделанные из прокатных, перекрывающихся окон. То есть, чтобы разделить мой фреймворк с определенным размером окна и определенным шагом.Rolling window Pandas

Как это сделать с помощью Pandas? Я вижу, что есть скользящее окно, но оно используется для выполнения некоторых агрегаций над значениями в окне (например, для расчета скользящего среднего). Мне только интересно изолировать эти перекрывающиеся окна. Как это сделать?

Так что выход будет dataframe так:

1, a 
2, b 
3, c 
4, d 
5, e 
6, f 
7, g 

И размер окна 3 и шаг 2 на выходе будет:

1, a 
2, b 
3, c 

3, c 
4, d 
5, e 

5, e 
6, f 
7, g 

Просто чтобы быть ясно, я знаю, как писать функция для этого, просто хотела проверить, есть ли что-то уже доступное в Пандах.

+0

вы не возражаете, включая минимальный пример, включая желаемый результат (см [mcve] (http://stackoverflow.com/help/mcve))? –

+0

@JulienMarrec Добавлен пример. – Marko

+0

Должно ли это быть 1,2,3, а затем 2,3,4 при заданном размере окна 3 и 2-го шага? –

ответ

0

Я не думаю, что есть какая-либо функция панд, которая поможет вам. Простая реализация:

A = pd.DataFrame(index=range(1,10), 
       data=['a','b','c','d','e','f','g','h','i'], 
       columns=['letters']) 

step = 2 
size = 3 
n_examples = len(A) 
dataframes = [] 
k=0 

while(k * step + size < n_examples): 
    dataframes += [A.loc[k * step:k * step + size]] 
    k+=1 

print(dataframes) 

С выходом:

[ letters 
1  a 
2  b 
3  c, letters 
2  b 
3  c 
4  d 
5  e, letters 
4  d 
5  e 
6  f 
7  g]