Borrar la columna del DataFrame de pandas

Al borrar una columna en un DataFrame uso:

del df['column_name']

Y esto funciona muy bien. ¿Por qué no puedo usar lo siguiente?

del df.column_name

Como puedes acceder a la columna/serie como df.nombre_columna, espero que esto funcione.

La mejor manera de hacer esto en pandas es utilizar drop:

df = df.drop('column_name', 1)

donde 1 es el número del eje (0 para las filas y 1 para las columnas.)

Para eliminar la columna sin tener que reasignar df puedes hacer

df.drop('column_name', axis=1, inplace=True)

Por último, para eliminar por la columna número en lugar de por la columna etiqueta, prueba esto para eliminar, por ejemplo, la 1ª, 2ª y 4ª columnas:

df = df.drop(df.columns[[0, 1, 3]], axis=1)  # df.columns is zero-based pd.Index 
Comentarios (17)
Solución

Como has adivinado, la sintaxis correcta es

del df['column_name']

Es difícil hacer que del df.column_name funcione simplemente como resultado de las limitaciones sintácticas de Python. del df[nombre] es traducido por Python como df.__delitem__(nombre) bajo cuerda.

Comentarios (6)

Es una buena práctica utilizar siempre la notación []. Una de las razones es que la notación de atributos (df.nombre_columna) no funciona para los índices numerados:

In [1]: df = DataFrame([[1, 2, 3], [4, 5, 6]])

In [2]: df[1]
Out[2]:
0    2
1    5
Name: 1

In [3]: df.1
  File "", line 1
    df.1
       ^
SyntaxError: invalid syntax
Comentarios (0)