Python Pandas функции прокрутки
Я не уверен, что понимаю параметрmin_periods
в пандахrolling
функции: почему он должен быть меньше, чемwindow
параметр? Я хотел бы вычислить (например) скользящий максимум минус скользящий мин с окном из десяти значений, НО я хочу подождать, может быть, 20 значений перед началом вычислений:
In[1]: import pandas as pd
In[2]: import numpy as np
In[3]: df = pd.DataFrame(columns=['A','B'], data=np.random.randint(low=0,high=100,size=(100,2)))
In[4]: roll = df['A'].rolling(window=10, min_periods=20)
In[5]: df['C'] = roll.max() - roll.min()
In[6]: roll
Out[6]: Rolling [window=10,min_periods=20,center=False,axis=0]
In[7]: df['C'] = roll.max()-roll.min()
Я получаю следующую ошибку:
ValueError: Invalid min_periods size 20 greater than window 10
я думал такmin_periods
было там, чтобы сказать, сколько значений функция должна ждать, прежде чем начать вычисления. В документации сказано:
min_periods: int, по умолчанию None
Минимальное количество наблюдений в окне, которое должно иметь значение (в противном случае результат равен NA)
Я не был внимателен к деталям "в окне" здесь ... Тогда какой самый эффективный способ достичь того, чего я пытаюсь достичь? Должен ли я сделать что-то вроде:
roll = df.loc[20:,'A'].rolling(window=10)
df['C'] = roll.max() - roll.min()
Есть ли более эффективный способ?