¿Cómo eliminar un nivel de un índice de columna de varios niveles en Pandas Dataframe?

En este artículo, aprenderemos cómo eliminar un nivel de un índice de columna de varios niveles . Pero antes de eso, necesitamos saber qué es un índice multinivel. Un dataframe de índice multinivel es un tipo de dataframe que contiene indexación jerárquica o de múltiples niveles .
En este artículo, crearemos un marco de datos de nuestra propia elección con indexación de múltiples columnas y luego dejaremos un nivel de nuestra indexación jerárquica.

Implementación paso a paso

Entendamos esto usando la implementación paso a paso con la ayuda de un ejemplo.

Paso 1: Importe todas las bibliotecas requeridas.

Python3

# importing all important libraries
import pandas as pd

Paso 2: cree un índice de columna de varios niveles Pandas Dataframe y muéstrelo.

Estamos creando una columna de múltiples índices usando MultiIndex.from_tuples() que nos ayuda a crear múltiples índices uno debajo de otro, y se crea por columnas. Después de eso, usando pd.Dataframe() estamos creando datos y convirtiéndolos al formato tabular con los nombres de las columnas como índices de varios niveles. Además, estamos cambiando el nombre del índice de la tabla usando df.index.   

Python3

# Creating a multilevel index 
index = pd.MultiIndex.from_tuples([("Group 1", "Group 1"), 
                                   ("Group 1", "Group 2"),
                                   ("Group 3","Group 3")])
  
# Creating a pandas dataframe with 
# multilevel-column indexing
df = pd.DataFrame([["Ross","Joey","Chandler"],
                   ["Rachel","","Monica"]], 
                  columns=index)
  
# Labelling the dataframe index.
index = df. index
index. name = "F.R.I.E.N.D.S"
  
# Showing the above multi-index column
# dataframe
print(df)

Producción:

Paso 3: suelte los niveles del marco de datos

Ahora se crea un marco de datos de índice de columna de varios niveles usando python. Ahora vamos a implementar el concepto anterior ahora. Tenemos que bajar un nivel. Podemos hacerlo usando df.columns.droplevel(level=0) . Esto nos ayuda a bajar un nivel de índice desde la parte superior que es de índice 0.

Python3

# Dropping a level down
df.columns = df.columns.droplevel(0)

Paso 4: Muestra el resultado requerido

Python3

print(df)

Producción:

Por lo tanto, hemos podido eliminar un nivel de columna de índice con éxito.

Veamos algunos ejemplos más basados ​​en el enfoque anterior.

Ejemplo 1:

En el siguiente ejemplo, eliminaremos un nivel de un índice específico en el índice de columna de varios niveles. Esto se puede hacer usando la misma sintaxis que hemos usado anteriormente [ df.columns.droplevel(level=0) ] donde si especificamos el número de nivel, el siguiente índice se elimina de acuerdo con la indexación basada en cero. Así que pasemos a la implementación del concepto.

Python3

# importing all important libraries
import pandas as pd
  
# Creating a multilevel index 
index = pd.MultiIndex.from_tuples([("Company A", "Company B","Company C"), 
                                   ("Company A", "Company A","Company B"),
                                   ("Company A","Company B","Company C")])
  
# Creating a pandas dataframe with 
# multilevel-column indexing
df = pd.DataFrame([["Atreyi","Digangana","Sohom"],
                   ["Sujit","Bjon","Rajshekhar"],
                   ["Debosmita","Shatabdi",""]], 
                  columns=index)
  
# Labelling the dataframe index.
index = df. index
index. name = "ECE Placement"
  
# Showing the above multi-index column
# dataframe
print(df)

Producción:

Ahora, si queremos bajar el nivel con el índice 2, ¡veamos qué sucede!

Python3

# Dropping a level number 2
df.columns = df.columns.droplevel(2)
print(df)

Producción:

Por lo tanto, podemos observar que en el índice de columna de varios niveles, hemos eliminado con éxito el nivel con el número de índice 2. 

Ejemplo 2:

En este ejemplo, implementaremos más conceptos del índice multinivel. Eliminaremos varios niveles al mismo tiempo.

Python3

# importing all important libraries
import pandas as pd
  
# Creating a multilevel index
index = pd.MultiIndex.from_tuples([("Company A", "Company B", "Company C"),
                                   ("Company A", "Company A", "Company B"),
                                   ("Company A", "Company B", "Company C")])
  
# Creating a pandas dataframe with
# multilevel-column indexing
df = pd.DataFrame([["Atreyi", "Digangana", "Sohom"],
                   ["Sujit", "Bjon", "Rajshekhar"],
                   ["Debosmita", "Shatabdi", ""]],
                  columns=index)
  
# Labelling the dataframe index.
index = df. index
index. name = "ECE Placement"
  
# Showing the above multi-index column
# dataframe
print(df)

Producción:

Como podemos ver, cada lista de arreglos contiene los índices por columnas. Entonces, tres arreglos significan tres columnas y el número de valores en el arreglo se refiere al número de filas. Eliminemos múltiples índices del marco de datos ahora. Podemos hacerlo usando df.columns.droplevel(level=0) llamándolo varias veces. ¡Pero aquí hay una trampa! 

Python3

# Dropping a level down
df.columns = df.columns.droplevel(0)
  
# Dropping another level down
df.columns = df.columns.droplevel(0)
  
# Showing the dataframe
print(df)

Como podemos ver, hay dos instrucciones droplevel con el nivel 0. Esto se debe a que, después de eliminar un solo nivel, los restantes se reorganizan. Entonces, el nivel que estaba en el índice 1 ahora llegará al índice 0, por lo tanto, se escriben múltiples niveles de caída en ese caso.

Producción:

Por lo tanto, el nivel 0 y el nivel 1 se eliminan y nos queda solo el nivel 2, que ahora se muestra como nivel 0.

Ejemplo 3:

En el último ejemplo, eliminemos varios niveles de varias posiciones en el marco de datos. 

Python3

# importing all important libraries
import pandas as pd
  
# Creating a pandas dataframe
df = pd.DataFrame([["Coding", "System Design"],
                   ["DBMS", "Aptitude"],
                   ["Logical Reasoning", "Development"]])
  
# Creating multilevel index from tuples
df.columns = pd.MultiIndex.from_tuples([('Group 1', 'Group 2', 'Group 3', 'Group 4'),
                                        ('Group 3', 'Group 4', 'Group 5', 'Group 6')],
                                       names=['level 1', 'level 2', 'level 3', 'level 4'])
# Showing the dataframe
print(df)

Producción:

Ahora eliminemos los niveles 1 y 3 respectivamente:

Python3

# Dropping a level down(Level 1)
df.columns = df.columns.droplevel(0)
  
# Dropping a level down after
# re-arrangement(Level 2)
df.columns = df.columns.droplevel(1)
  
# Showing the dataframe
print(df)

Como podemos ver, hemos bajado un nivel desde el índice 0 en el primer caso. Después de la reorganización, el nivel 2 ahora llegará a los índices 0 del marco de datos del índice de niveles múltiples. Ahora, para eliminar el nivel 3 ahora, tenemos que especificar el nivel como 1 de acuerdo con la indexación basada en 0 después de la reorganización. Ahora los niveles 2 y 4 se mostrarán en la salida resultante.

Producción:

Publicación traducida automáticamente

Artículo escrito por dassohom5 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *