HOWTO · Pandas
Elimina una riga in base al valore della colonna in Pandas DataFrame
Questo tutorial dimostra l'eliminazione di una riga in base al valore della colonna in Pandas DataFrame utilizzando metodi come drop with loc, boolean masking.
In questa pagina
Introdurremo metodi per eliminare le righe DataFrame di Pandas in base alle condizioni sui valori delle colonne, utilizzando .drop (con e senza loc) e mascheramento booleano.
Metodo .drop per eliminare la riga sul valore della colonna in Pandas DataFrame
Il metodo .drop accetta un singolo o una lista di nomi di colonne ed elimina le righe o le colonne. Per le righe impostiamo il parametro axis=0 e per la colonna impostiamo axis=1 (di default axis è 0). Possiamo anche ottenere la serie di True e False in base alla condizione applicata al valore della colonna nel DataFrame di Pandas.
Codici di esempio:
# 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)
Produzione:
Name Price Stock
0 Orange 34 Yes
3 Apple 44 Yes
5 Kiwi 84 Yes
Possiamo anche ottenere un risultato simile usando .loc all’interno del metodo df.drop.
df.drop(df.loc[df["Stock"] == "Yes"].index, inplace=True)
Possiamo anche rilasciare le righe in base a più valori di colonna. Nell’esempio precedente, possiamo eliminare le righe con prezzo >= 30 e prezzo <= 70.
Codice di esempio:
# 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)
Produzione:
Name Price Stock
1 Mango 24 No
2 banana 14 No
5 Kiwi 84 Yes
Le righe con prezzo > 30 e meno < 70 sono state eliminate.
Metodo boolean masking per eliminare la riga in Pandas DataFrame
Il boolean masking è il modo migliore e più semplice per eliminare la riga nel DataFrame di Pandas in base al valore della colonna.
Codici di esempio:
# 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")])
Produzione:
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