Saltar al contenido principal

Tutorial Pandas Restablecer Índice

Aprende el método pandas reset_index() para restablecer el índice de un DataFrame. Explora las distintas opciones disponibles con este método y cómo restablecer el índice para DataFrame simple y multinivel.
Actualizado 29 jul 2024  · 8 min de lectura

Después de manipular y filtrar un gran conjunto de datos, puede que acabes teniendo el DataFrame preciso que necesitas. Sin embargo, este DataFrame conserva el índice original, que puede ser no secuencial. En estos casos, debes restablecer el índice del Marco de datos.

En este tutorial, hablaremos del método pandas reset_index(), que se utiliza para restablecer el índice de un DataFrame. Exploraremos las distintas opciones disponibles con este método. Además, veremos cómo restablecer el índice de los DataFrame simples y multinivel.

Para practicar el restablecimiento de índices DataFrame, utilizaremos un conjunto de datos de aerolíneas. Utilizaremos Datalab de Datacamp, un entorno interactivo diseñado específicamente para análisis de datos en Pythonpor lo que es una herramienta perfecta para seguir este tutorial.

¿Qué es reset_index?

El métodoreset_index de Pandas restablece el índice de un DataFrame al predeterminado. Tras operaciones como filtrar, concatenar o fusionar, el índice puede dejar de ser secuencial. Este método ayuda a restablecer un índice limpio y secuencial. Si el Marco de Datos tiene un Multiíndice, puede eliminar uno o varios niveles.

Sintaxis básica:

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

Parámetros:

  1. nivel: En un DataFrame multinivel, toma un nombre de nivel o una posición del índice de la fila que hay que eliminar del índice. Por defecto, elimina todos los niveles.
  2. caída: Es una bandera booleana. True - El índice de la fila actual no se añade como nueva columna en el DataFrame. Falso (por defecto) - El índice de la fila actual se añade como una nueva columna en el Marco de datos.
  3. en su sitio: Especifica si se devuelve un nuevo Marco de datos o se actualiza el existente. Es una bandera booleana con un valor por defecto de Falso.
  4. nivel_col: Si las columnas tienen varios niveles, esto determina en qué nivel se insertan las etiquetas. Por defecto, se insertan en el primer nivel.
  5. col_relleno: Si las columnas tienen varios niveles, esto determina cómo se nombran los demás niveles. Si es Ninguno, se repite el nombre del índice.

Devuelve:

DataFrame con el nuevo índice o Ninguno si inplace=True.

Cómo utilizar reset_index

Si lees un archivo CSV utilizando el método pandas read_csv() sin especificar un índice, el DataFrame resultante tendrá un índice por defecto basado en números enteros que comenzará en 0 y aumentará en 1 para cada fila posterior.

import pandas as pd
df = pd.read_csv("airlines_dataset.csv").head()
df

lectura del conjunto de datos de las líneas aéreas

En algunos casos, puede que prefieras etiquetas de fila más descriptivas. Para conseguirlo, puedes establecer una de las columnas del Marco de datos como su índice (etiquetas de fila). Cuando utilices el método read_csv() para cargar datos de un archivo CSV, especifica la columna deseada para el índice utilizando el parámetroindex_col.

import pandas as pd
df = pd.read_csv("airlines_dataset.csv", index_col="Operating Airline IATA Code").head()
df

establecer la columna Código IATA de la compañía aérea operadora como nuevo índice del marco de datos

También puedes utilizar el método set_index() para establecer como índice cualquier columna de un Marco de datos:

import pandas as pd
df = pd.read_csv("airlines_dataset.csv").head()
df.set_index("Operating Airline IATA Code", inplace=True)
df

Ten en cuenta que el fragmento de código hará cambios en el DataFrame original.

establecer la columna Código IATA de la compañía aérea operadora como nuevo índice del marco de datos mediante el método set_index

¿Y si necesitas restaurar el índice numérico por defecto? Aquí es donde entra en juego el método reset_index() Pandas.

df.reset_index()

restablecer el índice del marco de datos

El ejemplo muestra que, tras establecer como índice la columna "Código IATA de la compañía aérea operadora", reset_index se utiliza para revertir el Marco de Datos a su índice entero por defecto.

Aplicaciones prácticas de reset_index

El método reset_index() de Pandas es una potente herramienta para reorganizar los índices de DataFrame cuando se trata de conjuntos de datos filtrados, DataFrames concatenados o índices multinivel.

Más información sobre remodelar marcos de datos de formato ancho a formato largo, cómo apilar y desapilar filas y columnas, y cómo manejar DataFrames multiíndice en nuestro curso online.

Restablecer después de filtrar

Cuando filtras un Marco de datos, se conserva el índice original. Utilizando reset_index, puedes volver a indexar el DataFrame filtrado.

import pandas as pd
df = pd.read_csv("airlines_dataset.csv")

Vamos a filtrar los datos para seleccionar sólo las filas en las que el "recuento de aterrizajes" sea superior a 1000. Tras el filtrado, los índices pueden no ser secuenciales. A continuación, puedes utilizar el método reset_index para restablecer el índice del Marco de datos filtrado.

filtered_df = df[df["Landing Count"] > 1000].head()
filtered_df

daraframe donde el "recuento de aterrizajes" sea superior a 1000

La imagen anterior muestra que el marco de datos se filtra en función de la condición aplicada, pero el índice no es secuencial. Ahora, vamos a utilizar reset_index para reindexar el DataFrame filtrado y garantizar un índice secuencial. He aquí cómo puedes hacerlo:

filtered_df_reset = filtered_df.reset_index()
filtered_df_reset

El índice ajustado a secuencial

El comportamiento por defecto de este método incluye sustituir el índice existente del Marco de datos por uno por defecto basado en números enteros y convertir el índice antiguo en una nueva columna con el mismo nombre (o "índice" si no tenía nombre).

Por tanto, utiliza el parámetro drop=Trueque garantiza que el índice antiguo no se añada como una columna nueva.

filtered_df_reset = filtered_df.reset_index(drop=True)
filtered_df_reset

utilizando el parámetro drop para eliminar el índice antiguo

¡Estupendo! Los índices se restablecen ahora al índice entero por defecto (0, 1, 2, ...), proporcionando un índice limpio y secuencial.

Concatenar o fusionar

Al combinar DataFrames, el DataFrame resultante podría contener índices duplicados o no secuenciales. Restablecer el índice crea un índice limpio y secuencial.

Supón que tienes dos DataFrames y quieres concatenarlos. He creado dos DataFrames a partir del conjunto de datos de las compañías aéreas con fines de demostración.

import pandas as pd
df = pd.read_csv("airlines_dataset.csv")
split_index = int(df.shape[0] / 2)
df1 = df[:split_index].head()
df2 = df[split_index:].head()

Aquí está df1:

marco de datos 1 extraído del marco de datos original

Aquí está df2:

marco de datos 2 extraído del marco de datos original

Vamos a concatenar los DataFrames df1 y df2.

df_concat = pd.concat([df1, df2])

marco de datos concatenado

Los datos muestran índices no secuenciales. Tenemos que restablecer el índice del DataFrame concatenado para que sea secuencial.

Vamos a restablecer el índice del DataFrame utilizando el método reset_index() de pandas.

df_concat.reset_index()

Necesidad de eliminar la columna índice

Éste es el resultado tras restablecer el índice del Marco de datos. El método reset_index convierte el índice antiguo en una columna nueva. Para eliminar esta columna adicional, debes utilizar el parámetro drop=True.

df_concat.reset_index(drop=True)

columna índice eliminada

Manejar la indexación multinivel

Para los DataFrames con indexación jerárquica (multinivel), reset_index puede utilizarse para simplificar el Marco de datos convirtiendo el índice multinivel en columnas.

Veamos un ejemplo de un Marco de datos con un índice multinivel.

import pandas as pd
df = pd.read_csv(
    "airlines_dataset.csv", index_col=["Aircraft Model", "Operating Airline IATA Code"]
).head()

múltiples índices en un marco de datos

Si compruebas su índice, verás que no es un índice DataFrame común, sino un objeto MultiIndex

múltiples índices en el marco de datos

Ahora, utilicemos el método pandas reset_index() que elimina todos los niveles de un Multiíndice:

df.reset_index()

multiíndice pasa a ser secuencial

Puedes ver que ambos niveles del Multiíndice se convierten en columnas comunes del Marco de datos, mientras que el índice se restablece al predeterminado basado en enteros.

También puedes utilizar el parámetrolevel para eliminar los niveles seleccionados del índice del Marco de datos. Convierte los niveles seleccionados en columnas comunes del DataFrame, a menos que elijas eliminar completamente esta información del DataFrame mediante el parámetro drop. Echémosle un vistazo:

df.reset_index(level=["Aircraft Model"])

El código IATA de la compañía aérea operadora sólo permanece como índice

La imagen anterior muestra que "Modelo de avión" es ahora una columna normal en el Marco de datos. Sólo queda como índice "Código IATA de la compañía aérea operadora".

Ahora bien, si no quieres que el índice descrito en la lista se convierta en una columna normal, puedes combinar el botón soltar y nivel para eliminarlo del Marco de datos.

df.reset_index(level=["Aircraft Model"], drop=True)

eliminar el nombre de la columna Modelo de avión

El índice "Modelo de avión" se ha eliminado del índice y del Marco de datos. El otro índice, "Código IATA de la compañía aérea operadora", se ha mantenido como índice actual del Marco de datos.

Uso avanzado y consejos

Conservar el índice

Supón que fusionas dos DataFrame; el DataFrame fusionado resultante ya no tendrá índices secuenciales, como se muestra en el DataFrame siguiente.

marco de datos temporal

Vamos a restablecer el índice del DataFrame utilizando el método reset_index() de pandas.

df.reset_index()

necesidad de eliminar del índice una columna innecesaria

El drop determina si se mantiene el índice antiguo como columna en el DataFrame después de restablecer el índice o si se elimina por completo. Por defecto (drop=False), se mantiene el índice antiguo, como se ha demostrado en todos los ejemplos anteriores. Alternativamente, si estableces drop=True, eliminarás el índice antiguo del DataFrame después de reiniciarlo.

df.reset_index(drop=True)

columna índice eliminada

Funcionamiento in situ

Modifica el DataFrame en su lugar utilizando el parámetro inplace para evitar crear un nuevo Marco de datos.

Supón que tienes el siguiente Marco de Datos:

el índice no es secuencial

Establecer el parámetro inplace a True garantiza que los cambios se apliquen directamente al Marco de Datos original, evitando la creación de un Marco de Datos distinto.

df_concat.reset_index(drop=True, inplace=True)
df_concat

el índice es secuencial

Gestión de duplicados

Gestiona los índices duplicados restableciendo y reindexando adecuadamente.

Supón que tienes los datos con índices duplicados.

marco de datos con índices duplicados

Utilizando reset_index() con drop=True y inplace=True garantiza que el DataFrame resultante tendrá índices continuos, empezando por 0 e incrementándose secuencialmente.

df.reset_index(drop=True, inplace=True)

el índice es secuencial

Pandas reset_index Errores comunes y solución de problemas

  1. El índice no se restablece: Asegúrate de que no utilizas el parámetro inplace=False si esperas que se modifique el DataFrame original. Si inplace se establece en False, se devuelve un nuevo Marco de datos y el Marco de datos original permanece inalterado.
  2. Pérdida de datos: Ten cuidado con el parámetro drop para evitar la pérdida involuntaria de datos. Si eliminas el índice, los valores actuales del índice desaparecerán permanentemente.

Ejemplo práctico de reset_index

Apliquemos lo que hemos aprendido sobre restablecer el índice del Marco de datos y veamos cómo puede ser útil restablecer el índice del Marco de datos al eliminar valores perdidos.

Nuestro conjunto de datos de aerolíneas no tiene valores perdidos, así que vamos a utilizar la función Películas y programas de TV de Netflix de Netflix. Tiene valores perdidos, perfectos para demostrar reset_index().

import pandas as pd
df = pd.read_csv("netflix_shows.csv")
df.head()

marco de datos de valores NaN

Puedes ver que faltan valores en el Marco de datos. Elimina las filas que contengan valores perdidos utilizando el método dropna().

df.dropna(inplace=True)
df.head()

marco de datos sin valores NaN

Se han eliminado del DataFrame las filas que contenían valores NaN. Sin embargo, el índice ya no es continuo (0, 1, 2, 4). Vamos a reajustarlo:

df.reset_index()

necesidad de eliminar la columna índice innecesaria

Ahora, el índice es continuo; sin embargo, como no pasamos explícitamente el parámetro drop, el índice antiguo se convirtió en una columna con el nombre por defectoindex. Vamos a eliminar completamente el índice antiguo del Marco de datos:

df.reset_index(drop=True)

el conjunto de datos es normal

Hemos eliminado por completo el antiguo índice sin sentido, y el índice actual es ahora continuo. El paso final es guardar estas modificaciones en nuestro DataFrame original utilizando el parámetro inplace:

df.reset_index(drop=True, inplace=True)

Conclusión

Has aprendido cómo funciona la función reset_index en Pandas gestiona eficazmente DataFrame índices. Tanto si manejas datos filtrados, DataFrames concatenados o una compleja indexación multinivel, reset_index garantiza un DataFrame limpio y organizado. Sus parámetros ayudan a gestionar diversos escenarios de indexación en las tareas de manipulación de datos.

Sigue aprendiendo a utilizar funciones similares a reset_index con la carrera de Analista de Datos con Python.

Temas

Top pandas Cursos

curso

Data Manipulation with pandas

4 hr
383.3K
Learn how to import and clean data, calculate statistics, and create visualizations with pandas.
Ver detallesRight Arrow
Comienza El Curso
Ver másRight Arrow
Relacionado

tutorial

Tutorial de Pandas: DataFrames en Python

Explora el análisis de datos con Python. Los DataFrames de Pandas facilitan la manipulación de tus datos, desde la selección o sustitución de columnas e índices hasta la remodelación de tus datos.
Karlijn Willems's photo

Karlijn Willems

20 min

tutorial

Tutorial seleccionar columnas con Python

Utiliza Python Pandas y selecciona columnas de los DataFrames. ¡Sigue nuestro tutorial con ejemplos de código y aprende hoy mismo distintas formas de seleccionar tus datos!
DataCamp Team's photo

DataCamp Team

7 min

tutorial

Tutorial de list index() de Python

En este tutorial, aprenderás exclusivamente sobre la función index().
Sejal Jaiswal's photo

Sejal Jaiswal

6 min

tutorial

Tutorial de pandas en Python: la guía definitiva para principiantes

¿Todo preparado para comenzar tu viaje de pandas? Aquí tienes una guía paso a paso sobre cómo empezar.
Vidhi Chugh's photo

Vidhi Chugh

15 min

tutorial

Tutorial de unión de DataFrames en pandas

En este tutorial, usted aprenderá varias maneras en las que múltiples DataFrames pueden ser fusionados en python usando la librería Pandas.
DataCamp Team's photo

DataCamp Team

19 min

tutorial

Tutorial pandas read_csv(): importación de datos

La importación de datos es el primer paso importante en cualquier proyecto de ciencia de datos. Aprende por qué los científicos de datos actuales prefieren la función pandas read_csv() para hacerlo.
Kurtis Pykes 's photo

Kurtis Pykes

9 min

See MoreSee More