HOWTO · Pandas
Como excluir uma linha com base no valor da coluna em Pandas DataFrame
Este tutorial demonstra a eliminação de uma linha baseada no valor da coluna em Pandas DataFrame usando métodos como drop com loc, mascaramento booleano.
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