Como excluir uma linha com base no valor da coluna em Pandas DataFrame

Asad Riaz 30 janeiro 2023
  1. Método para excluir linha no valor da coluna em Pandas DataFrame
  2. Máscara booleana Método para excluir filas em Pandas DataFrame
Como excluir uma linha com base no valor da coluna em Pandas DataFrame

Introduziremos métodos para excluir linhas de Pandas DataFrame com base nas condições dos valores das colunas, utilizando .drop (com e sem loc) e máscara booleana.

Método para excluir linha no valor da coluna em Pandas DataFrame

O método .drop aceita um único ou lista de nomes de colunas e apaga as linhas ou colunas. Para linhas definimos o parâmetro axis=0 e para coluna definimos axis=1 (por padrão axis é 0). Também podemos obter as séries de Verdade e False com base na condição de aplicação do valor da coluna em Pandas DataFrame.

Códigos de exemplo:

# 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)

Resultado:

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

Também podemos obter um resultado semelhante utilizando o método .loc dentro do método df.drop.

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

Também podemos soltar as linhas com base em valores de múltiplas colunas. No exemplo acima, podemos excluir linhas que tenham preço >= 30 e preço <=70.

Exemplo de código:

# 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)

Resultado:

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

Linhas com preço > 30 e menos < 70 foram eliminadas.

Máscara booleana Método para excluir filas em Pandas DataFrame

A máscara booleana é a melhor e mais simples maneira de eliminar filas em Pandas DataFrame com base no valor da coluna.

Exemplos de códigos:

# 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")])

Resultado:

        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

Artigo relacionado - Pandas DataFrame