Wie man eine Zeile basierend auf einem Spaltenwert in Pandas DataFrame löscht

Asad Riaz 30 Januar 2023
  1. .drop Methode zum Löschen von Zeilen auf Spaltenwerten in Pandas DataFrame
  2. booleanische Maskierungsmethode zum Löschen von Zeilen in Pandas DataFrame
Wie man eine Zeile basierend auf einem Spaltenwert in Pandas DataFrame löscht

Wir werden Methoden zum Löschen von Pandas DataFrame-Zeilen basierend auf den Bedingungen der Spaltenwerte vorstellen, indem wir .drop (mit und ohne loc) und boole sche Maskierung verwenden.

.drop Methode zum Löschen von Zeilen auf Spaltenwerten in Pandas DataFrame

.drop-Methode akzeptiert einen einzelnen oder eine Liste von Spaltennamen und löscht die Zeilen oder Spalten. Für Zeilen setzen wir den Parameter axis=0 und für Spalten setzen wir axis=1 (standardmäßig ist axis 0). Wir können auch die Reihe von True und False erhalten, basierend auf der Bedingung, die auf den Spaltenwert in Pandas DataFrame angewendet wird.

Beispiel-Codes:

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

Ausgabe:

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

Wir können auch ein ähnliches Ergebnis erhalten, indem wir .loc innerhalb der df.drop Methode verwenden.

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

Wir können auch die Zeilen basierend auf mehreren Spaltenwerten fallen lassen. Im obigen Beispiel können wir Zeilen löschen, die einen Preis >= 30 und einen Preis <=70 haben.

Beispiel-Code:

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

Ausgabe:

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

Zeilen mit Preis > 30 und weniger als < 70 wurden gelöscht.

booleanische Maskierungsmethode zum Löschen von Zeilen in Pandas DataFrame

Die booleanische Maskierung ist der beste und einfachste Weg, Zeilen in Pandas DataFrame auf der Basis von Spaltenwerten zu löschen.

Beispiel-Codes:

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

Ausgabe:

        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

Verwandter Artikel - Pandas DataFrame