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

Asad Riaz 30 enero 2023
  1. El método .drop para borrar filas en el valor de las columnas en el Pandas DataFrame
  2. Método de enmascaramiento booleano para borrar filas en el Pandas DataFrame
Cómo borrar una fila basada en el valor de la columna en Pandas DataFrame

Introduciremos métodos para borrar filas del Pandas DataFrame 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 Pandas DataFrame

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 Pandas DataFrame.

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 Pandas DataFrame

El enmascaramiento booleano es la mejor y más simple manera de borrar una fila en el Pandas DataFrame 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