Cómo borrar una fila basada en el valor de la columna en Pandas DataFrame

  1. El método .drop para borrar filas en el valor de las columnas en el dataframe de Pandas
  2. Método de enmascaramiento booleano para borrar filas en el dataframe de Pandas

Introduciremos métodos para borrar filas del DataFrame de Pandas basados en las condiciones de los valores de las columnas, usando .drop (con y sin loc) y máscara booleana.

El método .drop para borrar filas en el valor de las columnas en el dataframe de Pandas

El método drop acepta un nombre o una lista de columnas y borra las filas o columnas. Para las filas establecemos el parámetro axis=0 y para las columnas establecemos axis=1 (por defecto axis es 0). También podemos obtener las series de True y False basadas en la condición que se aplica sobre el valor de la columna en el dataframe de Pandas.

Códigos de ejemplo:

# python 3.x
import pandas as pd
fruit_list = [ ('Orange', 34, 'Yes' ) ,
             ('Mango', 24, 'No' ) ,
             ('banana', 14, 'No' ) ,
             ('Apple', 44, 'Yes' ) ,
             ('Pineapple', 64, 'No') ,
             ('Kiwi', 84, 'Yes')  ]
  
#Create a DataFrame object
df = pd.DataFrame(fruit_list, columns = 
                  ['Name' , 'Price', 'Stock']) 
# Get names of indexes for which column Stock has value No
indexNames = df[ df['Stock'] == 'No' ].index
# Delete these row indexes from dataFrame
df.drop(indexNames , inplace=True)
print(df)

Producción:

     Name  Price Stock
0  Orange     34   Yes
3   Apple     44   Yes
5    Kiwi     84   Yes

También podemos obtener un resultado similar usando .loc dentro del método df.drop.

df.drop(df.loc[df['Stock']=='Yes'].index, inplace=True)

También podemos soltar las filas basadas en múltiples valores de columna. En el ejemplo anterior podemos eliminar las filas que tienen un precio >= 30 y un precio <=70.

Código de ejemplo:

# python 3.x
import pandas as pd
# List of Tuples
fruit_list = [ ('Orange', 34, 'Yes' ) ,
             ('Mango', 24, 'No' ) ,
             ('banana', 14, 'No' ) ,
             ('Apple', 44, 'Yes' ) ,
             ('Pineapple', 64, 'No') ,
             ('Kiwi', 84, 'Yes')  ]
  
#Create a DataFrame object
df = pd.DataFrame(fruit_list, columns = 
                  ['Name' , 'Price', 'Stock'])
indexNames = df[ (df['Price'] >= 30)
                & (df['Price'] <= 70) ].index
df.drop(indexNames , inplace=True)
print(df)

Producción:

     Name  Price Stock
1   Mango     24    No
2  banana     14    No
5    Kiwi     84   Yes

Se han eliminado las filas con precio >30 y menos <70.

Método de enmascaramiento booleano para borrar filas en el dataframe de Pandas

El enmascaramiento booleano es la mejor y más simple manera de borrar una fila en el dataframe de Pandas basado en el valor de la columna.

Códigos de ejemplo:

# python 3.x
import pandas as pd
# List of Tuples
fruit_list = [ ('Orange', 34, 'Yes' ) ,
             ('Mango', 24, 'No' ) ,
             ('banana', 14, 'No' ) ,
             ('Apple', 44, 'Yes' ) ,
             ('Pineapple', 64, 'No') ,
             ('Kiwi', 84, 'Yes')  ]
  
#Create a DataFrame object
df = pd.DataFrame(fruit_list, columns = 
                  ['Name' , 'Price', 'Stock'])
print(df[df.Price > 40])
print('............................')
print(df[(df.Price > 40) & (df.Stock== 'Yes')])  

Producción:

        Name  Price Stock
3      Apple     44   Yes
4  Pineapple     64    No
5       Kiwi     84   Yes
............................
    Name  Price Stock
3  Apple     44   Yes
5   Kiwi     84   Yes

Artículo relacionado - Pandas DataFrame

  • Cómo obtener las cabeceras de columna de Pandas DataFrame como una lista
  • Cómo crear una columna vacía en Pandas DataFrame