¿Cómo ejecutar funciones diferentes en diferentes partes de un dataframe en Python?
Tengo un dataframe (df).
Necesito encontrar la desviación estándar del dataframe a partir de este.
Para la primera fila, quiero usar la fórmula de varianza tradicional.
suma de (x – x(media))/n
y a partir de la segunda fila (=i) quiero usar la siguiente fórmula
lambda(varianza de la primera fila) + (1-lambda) (primera fila de retornos)^2
※Por primera fila, me refiero a la fila anterior.
Generar dataframe de muestra
import numpy as np
import pandas as pd
df=pd.Dataframe({'a':range(1,7),
'b':[x2 for x in range(1,7)],
'c':[x3 for x in range(1,7)]})
Generar dataframe de retornos
returns=df.pct_change()
Generar nueva dataframe de ceros
d=pd.DataFrame(0,index=np.arange(len(returns)),columns=returns.columns)
rellenar la primera fila
lamb=0.94
d.iloc[0]=list(returns.var())
¿Cómo puedo rellenar la segunda fila hasta el final usando la segunda fórmula?
Debería ser algo como
d[1:].agg(lambda x: lambx.shift(-1)+(1-lamb)returns[:2]
pero obviamente arrojó un error largo.
¿Podrías ayudar por favor?
davy.ai
Puedes usar un bucle
for
para rellenar la segunda fila y las siguientes con la fórmula que proporcionaste. El código se vería algo así:python
for i in range(1, len(returns)):
d.iloc[i] = lambd.iloc[i-1] + (1-lamb)(returns.iloc[i-1]**2)