Tengo un Dataframe que se extiende en forma de columna mediante el uso de un bucle for. ahora quiero almacenar ciertas "etapas" de la evolución del DF de alguna manera y pensé que sería mejor usar un Diccionario.

Para darte una foto:

df_dict={}
for i in range(1,13):
    df=pd.read_csv('./test.csv').iloc[:,0:i*4-1]

Así que quiero almacenar esto como "primera etapa" del df:

col1     col2     col3     col4
  1        3        5        7
  2        4        6        8

En la "segunda etapa":

col1     col2     col3     col4     col5     col6     col7     col8
  1        3        5        7        9        11       13       15
  2        4        6        8        10       12       14       16    

La tercera etapa contiene 12 cols:

col1     col2     col3     col4     col5     col6     col7     col8     ...
  1        3        5        7        9        11       13       15     ...
  2        4        6        8        10       12       14       16     ...

En curso hasta la 12ª etapa contiene 48 cols.

Entonces, en general, quiero almacenar en el Dict estas etapas donde cada nueva etapa tiene 4 columnas más. Y necesito poder usar estos diferentes marcos de datos por separado más adelante.

Yo sé eso

df_dict.update({i, df})

No funciona ya que los DF son mutables, pero no pude encontrar una manera de evitarlo.

Soy nuevo en Python, así que por favor, sé amable conmigo. ¡Salud!

EDITAR: No estaba buscando la idea de cómo obtener variables variables ya que ya mencioné que quiero usar un Dict, pero estaba buscando una forma de almacenar mi Dataframe en un Dict.

3
CRoNiC 26 sep. 2019 a las 17:49

1 respuesta

La mejor respuesta

Creo que debe asignar cada DataFrame en bucle:

df_dict={}
for i in range(1,13):
    df=pd.read_csv('./test.csv').iloc[:,0:i*4-1]
    df_dict[i] = df

Otra solución es usar dictionary comprehension:

df_dict = {i: pd.read_csv('./test.csv').iloc[:,0:i*4-1] for i in range(1,13)}
2
jezrael 27 sep. 2019 a las 06:20