es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , , ,

Answer

  1. Avatar for 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:

    import pandas as pd
    from scipy import stats
    
    i = len(df.columns)
    df_vars = pd.DataFrame()
    
    for n in range(i):
        x = df.iloc[:, n]
        y = #variable con los valores observados
        sl, ic = stats.linregress(x, y)
    
        var = ((sl * x) + ic)
    
        df_vars[f'var_{n}'] = var
    
    df_vars.head()
    

    En este código modificado, primero creamos un DataFrame vacío llamado df_vars. Luego, dentro del bucle, calculamos cada variable var y la agregamos como una nueva columna con el nombre var_n utilizando df_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.

Comments are closed.