Original article: Dataframe Drop Column in Pandas – How to Remove Columns from Dataframes

En Pandas, a veces necesitarás eliminar columnas de un Marco de Datos por varias razones, como limpiar datos, reducir el uso de memoria o simplificar el análisis. Es por ello que en este artículo, te mostraré cómo hacerlo.

Comenzaré presentando el método .drop() que es el método principal para eliminar columnas en Pandas.

Repasaremos la sintaxis y los parámetros del método .drop(), incluyendo cómo especificar las columnas a eliminar y cómo controlar si el Marco de Datos original se modifica en su lugar o se devuelve un nuevo Marco de Datos.

A continuación, proporcionaré un ejemplo de cómo usar el método .drop() para eliminar columnas de un Marco de Datos.

Cómo usar el método .drop() en Pandas

El método .drop() es una función incorporada en Pandas que te permite eliminar una o más filas o columnas de un Marco de Datos.

Devuelve un nuevo Marco de Datos con las filas o columnas especificadas eliminadas y no modifica el Marco de Datos original en su lugar, a menos que establezcas el parámetro inplace en True.

La sintaxis para usar el método .drop() es la siguiente:

DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

Aquí, DataFrame se refiere al Marco de Datos de Pandas del cual deseas eliminar filas o columnas. Los parámetros que puedes usar con el método .drop() incluyen:

  • labels: Este parámetro especifica las etiquetas o índices de las filas o columnas que se van a eliminar. Puedes pasar una sola etiqueta o índice, o una lista de etiquetas o índices.
  • axis: Este parámetro especifica si se van a eliminar filas o columnas. Por defecto, está configurado en 0, lo que significa que se eliminan filas. Si deseas eliminar columnas, configúralo en 1.
  • index y columns: Estos parámetros son alternativas al parámetro de etiquetas y especifican las etiquetas o índices de las filas o columnas que se van a eliminar, respectivamente.
  • level: Este parámetro se utiliza para eliminar un nivel específico de un índice jerárquico.
  • inplace: Este parámetro es un valor booleano que determina si modificar el DataFrame original en su lugar. Por defecto, está configurado en False.
  • errors: Este parámetro especifica cómo manejar errores si la(s) etiqueta(s) o índice(s) especificado(s) no se encuentran en el DataFrame. Por defecto, está configurado en raise, lo que significa que se genera un KeyError. Otras opciones son ignore y warn, que respectivamente ignorarán o mostrarán una advertencia cuando la etiqueta o índice no se encuentre.

Cómo eliminar una sola columna de un Marco de Datos en Pandas

Vamos a empezar suavemente aprendiendo primero cómo eliminar una sola columna de un Marco de Datos antes de eliminar múltiples columnas.

Muestra del código:

#Traducción al español del código
import pandas as pd
#Creamos un marco de datos de muestra
datos = {"nombre": ['Alicia', 'Bob', 'Charlie'],
        "edad": [25, 30, 35],
        "género": ['F', 'M', 'M']
        }
df = pd.DataFrame(datos)

# Mostramos el Marco de Datos original
print("DataFrame Original:\n", df)

# Damos drop a la columna "género"
df = df.drop(columns=['género'])

# Mostramos el Marco de Datos modificado
print("DataFrame Modificado:\n", df)

Resultado:

DataFrame Original:
     nombre  edad género
0   Alicia    25      F
1      Bob    30      M
2  Charlie    35      M
DataFrame Modificado:
     nombre  edad
0   Alicia    25
1      Bob    30
2  Charlie    35

En el ejemplo anterior, primero creamos un Marco de Datos de muestra con tres columnas: nombre, edad y género. Luego utilizamos el método .drop() con el parámetro columns para eliminar la columna género. El Marco de Datos resultante solo contiene las columnas nombre y edad.

Es importante tener en cuenta que el método .drop() no modifica el Marco de Datos original en su lugar. En su lugar, devuelve un nuevo Marco de Datos con la(s) columna(s) especificada(s) eliminada(s). Si deseas modificar el Marco de Datos original, necesitas asignar el resultado del método .drop() de nuevo a la variable original, como hicimos en el ejemplo anterior.

Además del parámetro columns, el método .drop() también tiene varios otros parámetros opcionales que puedes usar para controlar cómo se eliminan las columnas.

Por ejemplo, puedes usar el parámetro inplace para modificar el Marco de Datos original en su lugar en lugar de devolver un nuevo Marco de Datos. También puedes usar el parámetro axis para eliminar columnas por índice en lugar de por nombre.

Cómo eliminar varias columnas de un Marco de Datos en Pandas

En esta sección, eliminaremos varias columnas de nuestro Marco de Datos. Este enfoque es similar a eliminar una sola columna del Marco de Datos.

Para eliminar dos o más columnas de un Marco de Datos usando el método .drop() en Pandas, podemos pasar una lista de nombres de columnas al parámetro columns del método.

import pandas as pd

# creando -otra vez- un Marco de Datos
datos = {'nombre': ['John', 'Maria', 'Pedro'],
        'edad': [30, 25, 35],
        'género': ['M', 'F', 'M'],
        'ciudad': ['Ciudad de México', 'San José', 'Buenos Aires']}
df = pd.DataFrame(datos)

# Removiendo las columnas género y ciudad
df.drop(columns=['género', 'ciudad'], inplace=True)

# Damos print en el Marco de Datos modificado
print(df)

Resultado:

 nombre  edad
0   John    30
1  Maria    25
2  Pedro    35

Explicación del código:

En este ejemplo, primero creamos un Marco de Datos de muestra con cuatro columnas: nombre, edad, género y ciudad. Luego, usamos el método .drop() para eliminar las columnas ciudad y género  pasando una lista con sus nombres al parámetro columns.

Finalmente, establecemos el parámetro inplace en True para modificar el Marco de Datos original e imprimir el Marco de Datos modificado.

Ten en cuenta que también puedes eliminar columnas por sus índices pasando una lista de índices al parámetro columns. Por ejemplo, para eliminar la segunda y tercera columnas, puedes usar:

df.drop(columns=df.columns[1:3], inplace=True)

Esto eliminará las columnas con índices 1 y 2 (que son las columnas de edad y género en este ejemplo).

Conclusión

Espero que este artículo sea un recurso útil para cualquier persona que trabaje con Marco de Datos de Pandas y necesite eliminar columnas de manera eficiente y efectiva.

¡Conéctate conmigo en Twitter y LinkedIn! También puedes suscribirte a mi canal de YouTube.

¡Feliz Codificación!