Python

Pandas: Convertir el índice en una columna en un DataFrame

La semana pasada hemos visto cómo transformar una columna el índice de un DataFrame, en esta ocasión vamos a ver como se puede hacer el proceso: convertir el índice en una columna. Para lo que se usará el método reset_index() presente en los objetos DataFrame de Pandas.

El método reset_index()

En los objetos DataFrame de Pandas se encuentra el método reset_index() que tiene la siguiente forma

df.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='')

en donde las propiedades más importantes son:

  • level: por defecto el método restablece todos los índices del objeto, pero en el caso de los índices múltiples es posible indicar mediante esta propiedad aquellos que serán restablecidos.
  • drop: indica si el índice que se convierte en una columna o si este es eliminado, por defecto el valor es falso, esto es, los valores del índice se convertirán en una columna.
  • inplace: la propiedad indica si el método aplica las modificaciones al propio objeto o devuelve una copia modificada del mismo, por defecto el valor es falso, por lo que se obtiene una copia modificada.

Convertir el índice en una columna

Para comprobar el funcionamiento del método se puede usar el código visto la semana pasada para crear un conjunto de datos de ejemplo.

import pandas as pd

users = {'first_name': ['Montgomery', 'Dagmar', 'Reeba', 'Shalom', 'Broddy', 'Aurelia'],
         'last_name': ['Humes', 'Elstow', 'Wattisham', 'Alen', 'Keningham', 'Brechin'],
         'age': [27, 41, 29, 29, 21, 33],
         'gender': ['Male', 'Female', 'Female', 'Male', 'Male', 'Female']}

df = pd.DataFrame(users)
df.set_index('first_name', inplace=True)
df
            last_name  age  gender
first_name                        
Montgomery      Humes   27    Male
Dagmar         Elstow   41  Female
Reeba       Wattisham   29  Female
Shalom           Alen   29    Male
Broddy      Keningham   21    Male
Aurelia       Brechin   33  Female

En este ejemplo se ha creado inicialmente un DataFrame con un conjunto de datos y, mediante el método set_index(), se le ha asignado la columna con el nombre al índice. Obteniendo el objeto que se ha mostrado. Ahora se puede recuperar esta columna y generar un nuevo índice por defecto llamado al método reset_index() sin ningún parámetro.

dfi = df.reset_index()
dfi
   first_name  last_name  age  gender
0  Montgomery      Humes   27    Male
1      Dagmar     Elstow   41  Female
2       Reeba  Wattisham   29  Female
3      Shalom       Alen   29    Male
4      Broddy  Keningham   21    Male
5     Aurelia    Brechin   33  Female

Por defecto, los valores del índice se conservan en una nueva columna. En el caso de que no queramos conservar estos valores se puede asignar el valor verdadero a la propiedad drop para que se eliminen estos datos, creando así un conjunto de datos más pequeño.

dfi = df.reset_index(drop=True)
dfi
   last_name  age  gender
0      Humes   27    Male
1     Elstow   41  Female
2  Wattisham   29  Female
3       Alen   29    Male
4  Keningham   21    Male
5    Brechin   33  Female

Recuperar únicamente un índice en índices múltiples

En los DataFrame que existen más de un índice es posible recuperar solo uno de estos, manteniendo los otros. Para ver esto se le puede agregar un segundo índice al DataFrame, tal como vimos la semana pasada, usando el método set_index() con la propiedad append a verdadero.

df.set_index('last_name', append=True, inplace=True)
df
                      age  gender
first_name last_name             
Montgomery Humes       27    Male
Dagmar     Elstow      41  Female
Reeba      Wattisham   29  Female
Shalom     Alen        29    Male
Broddy     Keningham   21    Male
Aurelia    Brechin     33  Female

Ahora en el caso de usar el método reset_index() sin ningún parámetro se recuperaran ambos índices.

dfi = df.reset_index()
dfi
   first_name  last_name  age  gender
0  Montgomery      Humes   27    Male
1      Dagmar     Elstow   41  Female
2       Reeba  Wattisham   29  Female
3      Shalom       Alen   29    Male
4      Broddy  Keningham   21    Male
5     Aurelia    Brechin   33  Female

Aunque se puede indicar como primer parámetro del método el nombre de un índice para solamente recuperar este. Por ejemplo, para recuperar solamente los nombres se puede conseguir mediante

dfi = df.reset_index('first_name')
dfi
           first_name  age  gender
last_name                         
Humes      Montgomery   27    Male
Elstow         Dagmar   41  Female
Wattisham       Reeba   29  Female
Alen           Shalom   29    Male
Keningham      Broddy   21    Male
Brechin       Aurelia   33  Female

Realizando las operaciones en memoria

Nótese que en los ejemplos anteriores se ha creado una copia del DataFrame con las modificaciones, por lo que los datos originales se conservaban en df, mientras los resultados se podían consultar en dfi. Conservar ambas copias no es un problema cuando los DataFrames son pequeños, aunque estos pueden dar problemas de memoria en otros casos. Para evitar estos problemas se puede asignar el valor verdadero a la propiedad inplace, por lo que el objeto original se modificará y el método no devolverá ningún valor.

df.reset_index(inplace=True)
df
   first_name  last_name  age  gender
0  Montgomery      Humes   27    Male
1      Dagmar     Elstow   41  Female
2       Reeba  Wattisham   29  Female
3      Shalom       Alen   29    Male
4      Broddy  Keningham   21    Male
5     Aurelia    Brechin   33  Female

Conclusiones

En esta entrada se ha visto cómo se puede recuperar el índice de un DataFrame y convertirlo en una columna. Un proceso que complementa al que se ha visto la semana pasada en el que vio cómo convertir una columna en un índice.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Pandas

Recent Posts

De la Regresión Logística al Scorecard: La Transformación Matemática

En un entrada previa explicamos qué son el WOE y el IV y por qué…

22 horas ago

Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring

Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…

2 días ago

Interés compuesto: la fuerza que multiplica tu dinero (y los errores que la anulan)

“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…

6 días ago

Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales

Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…

1 semana ago

Costes hundidos en ciencia de datos: cuándo mantener un modelo y cuándo migrar

Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…

2 semanas ago

WOE e IV: La Base Matemática del Credit Scoring

Cuando un banco evalúa una solicitud de crédito necesita responder a una pregunta aparentemente simple:…

2 semanas ago

This website uses cookies.