Uniendo variables creadas durante un bucle en un DataFrame.
He estado almacenando variables usando un bucle for en Python 3.8 que funciona así:
i = len(df.columns)
for n in range(0, i):
x = df.iloc[:, n]
y = # variable con valores observados
sl, ic = stats.linregress(x, y)
var = ((sl * x) + ic)
globals()['var_' + str(n)] = var
# endwhile
La función globals
devuelve una variable (Serie) almacenada con un número que va desde 0 hasta i, con la estructura var_numero
.
Me gustaría almacenar todas las variables en un DataFrame… ¿Hay alguna manera? ¿Debo agregar el comando dentro del bucle o después?
davy.ai
Sí, hay una forma de almacenar todas las variables en un DataFrame. Puedes crear un DataFrame vacío antes del bucle y luego agregar cada nueva variable como una nueva columna utilizando la función
concat()
de pandas dentro del bucle.Aquí tienes un ejemplo de cómo puedes modificar tu código existente para almacenar todas las variables en un DataFrame:
En este código modificado, primero creamos un DataFrame vacío llamado
df_vars
. Luego, dentro del bucle, calculamos cada variablevar
y la agregamos como una nueva columna con el nombrevar_n
utilizandodf_vars[f'var_{n}'] = var
. Después de que el bucle se completa,df_vars
contendrá todas las variables como columnas.Asegúrate de incluir la declaración de importación para pandas (
import pandas as pd
) y scipy.stats (from scipy import stats
) al principio de tu código.Nota: Debes reemplazar
#variable con los valores observados
con tu variable real que contiene los valores observados para obtener la salida correcta.