Cómo eliminar columnas de un DataFrame de Python Pandas

En un anterior post vimos cómo eliminar filas de un DataFrame de Python Pandas según una condición. Vamos a ver ahora cómo eliminar columnas de tres formas diferentes, usando tanto el nombre de la columna como su posición.

0. Dataset de inicio

Partimos de un dataset con datos de observaciones astronómicas que ha sido recortado para simplificar el ejemplo:

import pandas as pd

df = pd.read_excel("ejemplo.xlsx")
Dataset de inicio.

Se observa que tenemos un conjunto de datos de 8 variables y 9 observaciones. Vamos a comenzar a eliminar columnas.

1. Eliminar columnas usando la función del()

Con la función del() tenemos una forma sencilla y directa de eliminar una columna a partir de su nombre. Vamos a eliminar, por ejemplo, la columna 3 de nombre “Sesgo”:

del(df['Sesgo'])
Columna “Sesgo” eliminada con la función del().

El inconveniente de este método es que tenemos que eliminar las columnas una a una. Vemos otra forma.

2- Eliminar columnas usando el método drop

Con el método drop podemos especificar filas o columnas a eliminar. Eliminamos las columnas “Desv DM” y “Sesgo DM”:

df.drop(['Desv DM', 'Sesgo DM'], axis = 'columns', inplace=True)
Dataset con las columnas ‘Desv DM’ y ‘Sesgo DM’ eliminadas con el método drop.

Existe otra forma de usar el método drop, indicando directamente el nombre de la columna o columnas:

df = df.drop(columns=['Curtosis'])

De esta forma, hemos eliminado la columna “Curtosis”, aunque en este caso debemos guardar la operación o tan sólo la representaremos en pantalla.

Una tercera forma de eliminar columnas con el método drop es usando axis = 1 en lugar de inplace:

df = df.drop(['Media DM'], axis=1)
Dataset sin la columna ‘Media DM’.

3. Eliminar columnas por su número o índice

Otra forma de usar el método drop es indicando el índice de la columna en lugar de su nombre. Vamos a eliminar las columnas de índice 1 y la de índice 3, que son las nombradas respectivamente como ‘Desv’ y ‘Curtosis DM’:

df = df.drop(df.columns[[1, 3]], axis='columns')
Dataset con las columnas 1 y 3 eliminadas con drop.

Como bonus track, podemos también usar el método drop para eliminar filas por índice. Por ejemplo, vamos a eliminar las dos primeras filas, las de índice 0 y 1:

df = df.drop([0, 1])
Dataset con las dos primera filas eliminadas.
Para saber más:
Eliminar una columna en un DataFrame.
Cómo eliminar la última columna de datos de un pandas dataframe.
Delete column from pandas DataFrame.

Deja una respuesta