Funciones rodantes de Python Pandas

No estoy seguro de entender el parámetromin_periods en pandasrolling funciones: ¿por qué tiene que ser más pequeño que elwindow ¿parámetro? Me gustaría calcular (por ejemplo) el máximo móvil menos el mínimo móvil con una ventana de diez valores, PERO quiero esperar unos 20 valores antes de comenzar los cálculos:

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()

Obtuve el siguiente error:

ValueError: Invalid min_periods size 20 greater than window 10

pensé quemin_periods estaba allí para decir cuántos valores tenía que esperar la función antes de comenzar los cálculos. La documentación dice:

min_periods: int, default Ninguno

Número mínimo de observaciones en la ventana para tener un valor (de lo contrario, el resultado es NA)

No había sido cuidadoso con los detalles "en la ventana" aquí ... Entonces, ¿cuál sería la forma más eficiente de lograr lo que estoy tratando de lograr? ¿Debo hacer algo como:

roll = df.loc[20:,'A'].rolling(window=10)
df['C'] = roll.max() - roll.min()

¿Hay alguna forma más eficiente?

Respuestas a la pregunta(2)

Su respuesta a la pregunta