Elimina una riga in base al valore della colonna in Pandas DataFrame
-
Metodo
.drop
per eliminare la riga sul valore della colonna in PandasDataFrame
-
Metodo
boolean masking
per eliminare la riga in PandasDataFrame
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
Articolo correlato - Pandas DataFrame
- Come ottenere le intestazioni delle colonne DataFrame Pandas come lista
- Come cancellare la colonna DataFrame Pandas DataFrame
- Come convertire la colonna DataFrame in data e ora in pandas
- Converti un Float in un Integer in Pandas DataFrame
- Ordina Pandas DataFrame in base ai valori di una colonna
- Ottieni l'aggregato di Pandas Group-By e Sum