Parte del contenido de un DataFrame de Pandas se puede eliminar mediante el método drop()
. En esta entrada vamos a ver cómo se puede usar este método para descartar filas en un DataFrame en base al índice.
El método drop()
Los DataFrames de Pandas cuentan con el método drop()
para eliminar parte del contenido de los mismos. Método que tiene básicamente la siguiente forma:
DataFrame.drop(labels=None, axis=0, inplace=False)
Un método que acepta una cadena o lista con los nombres de las filas o columnas que se desean eliminar. El borrado por filas se hará cuando el valor de axis
sea igual a 0, mientras que si se selecciona 1 el borrado será por columnas. Algo que ya se explicó en una entrada anterior.
Es importante tener en cuenta que el método drop()
no modifica el contenido del objeto por defecto, sino que crea uno nuevo sin los datos indicados. En el caso de que no deseemos modificar el contenido, por ejemplo, cuando el conjunto de datos es grande y queramos evitar tener ambos en memoria, es posible alterar el comportamiento por defecto del método asignando el valor verdadero a la propiedad inplace
.
El método cuenta con más propiedades que se pueden consultar en la documentación, pero que no vamos a usar en esta entrada.
Conjunto de datos de ejemplo
Como en otras ocasiones anteriores se puede crear un pequeño conjunto de datos para comprobar el funcionamiento del método.
import pandas as pd users = {'first_name': ['Montgomery', 'Dagmar', 'Reeba', 'Shalom', 'Broddy', 'Aurelia'], 'last_name': ['Humes', 'Elstow', 'Wattisham', 'Alen', 'Keningham', 'Brechin'], 'age': [27, 41, 29, 29, 21, 33], 'gender': ['Male', 'Female', 'Female', 'Male', 'Male', 'Female']} df = pd.DataFrame(users, index=['a', 'b', 'c' , 'd' , 'e' , 'f'])
first_name last_name age gender a Montgomery Humes 27 Male b Dagmar Elstow 41 Female c Reeba Wattisham 29 Female d Shalom Alen 29 Male e Broddy Keningham 21 Male f Aurelia Brechin 33 Female
Descartar una fila en base a su índice
El uso básico de drop()
permite descartar el contenido de una fila usando para ello su nombre. Algo que se puede conseguir solamente con la siguiente línea.
df_drop = df.drop('c')
Obteniendo como resultado un nuevo DataFrame
first_name last_name age gender a Montgomery Humes 27 Male b Dagmar Elstow 41 Female d Shalom Alen 29 Male e Broddy Keningham 21 Male f Aurelia Brechin 33 Female
Descartar varias filas en base a su índice
En el caso de que sea necesario eliminar más de una fila se puede conseguir en una única línea pasando una lista con los índices que se desean eliminar. Lo que se puede obtener con la siguiente línea de código.
df_drop = df.drop(['c', 'e'])
first_name last_name age gender a Montgomery Humes 27 Male b Dagmar Elstow 41 Female d Shalom Alen 29 Male f Aurelia Brechin 33 Female
Descartar varias filas en base a su posición
Si tenemos la posición de la fila en lugar de su nombre no se puede hacer directamente. Es necesario obtener primero los índices, usando para ello la propiedad index
de los DataFrames. Una propiedad que es una lista con el nombre de los índices. Así es posible descartar la segunda y cuarta fila utilizando la siguiente línea de código.
df_drop = df.drop(df.index[[1,3]])
first_name last_name age gender a Montgomery Humes 27 Male c Reeba Wattisham 29 Female e Broddy Keningham 21 Male f Aurelia Brechin 33 Female
Modificar el DataFrame
Si queremos que no se cree un nuevo DataFrame y se modifique el actual solamente hay que asignar el valor True
a la propiedad inplace
. Algo que es de gran utilidad para evitar tener varias versiones de este DataFrame en memoria.
df.drop(df.index[[1,3]], inplace=True)
Línea que produce el mismo resultado que la anterior, pero modifica el contenido de df
en lugar de crear un DataFrame nuevo.
Conclusiones
En esta entrada se ha repasado el funcionamiento básico del método drop()
para descartar filas en un DataFrame. Un método que también se puede usar para eliminar el contenido de las columnas.