Pandas DataFrame mit mehreren Bedingungen filtern

Suraj Joshi 30 Januar 2023
  1. Einträge eines DataFrame auf Basis mehrerer Bedingungen mit Hilfe der Indizierung filtern
  2. Filterung von Einträgen eines DataFrame basierend auf mehreren Bedingungen mit der Methode query()
Pandas DataFrame mit mehreren Bedingungen filtern

In diesem Tutorial wird erklärt, wie wir Einträge aus einem DataFrame basierend auf mehreren Bedingungen filtern können.

Wir werden in diesem Artikel den folgenden DataFrame verwenden.

import pandas as pd

stocks_df = pd.DataFrame(
    {
        "Stock": ["Tesla", "Moderna Inc", "Facebook", "Boeing"],
        "Price": [835, 112, 267, 209],
        "Sector": ["Technology", "Health Technology", "Technology", "Aircraft"],
    }
)

print(stocks_df)

Ausgabe:

         Stock  Price             Sector
0        Tesla    835         Technology
1  Moderna Inc    112  Health Technology
2     Facebook    267         Technology
3       Boeing    209           Aircraft

Einträge eines DataFrame auf Basis mehrerer Bedingungen mit Hilfe der Indizierung filtern

import pandas as pd

stocks_df = pd.DataFrame(
    {
        "Stock": ["Tesla", "Moderna Inc", "Facebook", "Boeing"],
        "Price": [835, 112, 267, 209],
        "Sector": ["Technology", "Health Technology", "Technology", "Aircraft"],
    }
)

print("Stocks DataFrame:")
print(stocks_df, "\n")

reqd_stocks = stocks_df[(stocks_df.Sector == "Technology") & (stocks_df.Price < 500)]

print("The stocks of technology sector with price less than 500 are:")
print(reqd_stocks)

Ausgabe:

Stocks DataFrame:
         Stock  Price             Sector
0        Tesla    835         Technology
1  Moderna Inc    112  Health Technology
2     Facebook    267         Technology
3       Boeing    209           Aircraft

The stocks of technology sector with price less than 500 are:
      Stock  Price      Sector
2  Facebook    267  Technology

Es werden alle Einträge in stocks_df gefiltert, deren Wert der Spalte Sector Technology ist und der Wert der Spalte Price kleiner als 500 ist.

Wir geben die Bedingungen innerhalb von [] an und verbinden die Bedingungen mit dem &- oder dem |-Operator, um die Werte basierend auf mehreren Bedingungen zu indizieren. Der Operator & repräsentiert die Logik und, was bedeutet, dass beide Bedingungen wahr sein müssen, um einen Eintrag auszuwählen. Der Operator | steht für die Logik oder, d. h. wenn eine der Bedingungen erfüllt ist, wird der Eintrag ausgewählt.

Filterung von Einträgen eines DataFrame basierend auf mehreren Bedingungen mit der Methode query()

Wir übergeben die durch den &- oder den |-Operator verbundenen mehreren Bedingungen als Argument an die Methode query().

import pandas as pd

stocks_df = pd.DataFrame(
    {
        "Stock": ["Tesla", "Moderna Inc", "Facebook", "Boeing"],
        "Price": [835, 112, 267, 209],
        "Sector": ["Technology", "Health Technology", "Technology", "Aircraft"],
    }
)
print("Stocks DataFrame:")
print(stocks_df, "\n")

reqd_stocks = stocks_df.query("Sector == 'Technology' & Price <500")

print("The stocks of technology sector with price less than 500 are:")
print(reqd_stocks)

Ausgabe:

Stocks DataFrame:
         Stock Price             Sector
0        Tesla    835         Technology
1 Moderna Inc    112 Health Technology
2     Facebook    267         Technology
3       Boeing    209           Aircraft

The stocks of technology sector with price less than 500 are:
      Stock Price      Sector
2 Facebook    267 Technology
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Verwandter Artikel - Pandas Filter