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
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.
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 "<ipython-input-3-e4803c0d1066>", line 1
df.1
^
SyntaxError: invalid syntax