Die Python-Pandas-DataFrame.where()-Funktion wird für bedingte Da­ten­ma­ni­pu­la­tio­nen in Da­ta­Frames ein­ge­setzt. Sie erlaubt es Nutzer:innen, Werte in einem Pandas DataFrame auf Basis spe­zi­fi­scher Kriterien aus­zu­tau­schen oder zu maskieren.

Syntax von Pandas DataFrame.where()

Die where()-Funktion ver­ar­bei­tet bis zu fünf Parameter und nutzt die folgende Basis-Syntax:

DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)
python

Dabei wird die Funktion auf einen DataFrame an­ge­wen­det. Nur jene Werte, welche die Bedingung (cond) erfüllen, bleiben gleich. Alle übrigen Daten werden durch die in other de­fi­nier­ten Werte ersetzt.

Relevante Parameter

Pandas DataFrame.where() bietet ver­schie­de­ne Parameter für eine präzise Steuerung der Da­ten­be­ar­bei­tung:

Parameter Be­schrei­bung Stan­dard­wert
cond Vor­aus­set­zung, damit Werte im DataFrame erhalten bleiben
other Er­satz­wert für Daten, welche die Bedingung nicht erfüllen
inplace Bei True erfolgt die Änderung direkt im be­stehen­den DataFrame False
axis Legt fest, ob die Bedingung auf Zeilen (axis=0) oder Spalten (axis=1) wirkt None
level Bestimmt die Ebene des Mul­ti­in­dex für die Anwendung der Bedingung None

Anwendung von Pandas DataFrame.where()

Die where()-Funktion hilft in vielen Szenarien der Da­ten­auf­be­rei­tung. Dazu gehören etwa die Be­rei­ni­gung von Da­ten­sät­zen oder das Erstellen neuer Spalten nach logischen Regeln.

Werte bedingt ersetzen

Stell dir vor, du hast einen DataFrame mit Ver­kaufs­zah­len und möchtest nur positive Er­geb­nis­se behalten. Alle negativen Beträge sollen durch 0 ersetzt werden. Mit Pandas DataFrame.where() klappt das rei­bungs­los. Zuerst erstellen wir den DataFrame:

import pandas as pd
# Beispiel-DataFrame erstellen
data = {
    'Region': ['Nord', 'Süd', 'Ost', 'West'],
    'Verkäufe_Q1': [15000, -5000, 3000, -1000],
    'Verkäufe_Q2': [20000, 25000, -7000, 5000]
}
df = pd.DataFrame(data)
print(df)
python

Dieser Code erzeugt folgenden DataFrame:

Region  Verkäufe_Q1  Verkäufe_Q2
0   Nord        15000        20000
1    Süd        -5000        25000
2    Ost         3000        -7000
3   West        -1000         5000

Durch where() ersetzt du negative Werte durch 0. Achte darauf, nur nu­me­ri­sche Spalten aus­zu­wäh­len, damit der ma­the­ma­ti­sche Vergleich korrekt aus­ge­führt wird.

# Bedingtes Ersetzen von Werten
df_positive = df.copy()
df_positive[['Verkäufe_Q1', 'Verkäufe_Q2']] = df[['Verkäufe_Q1', 'Verkäufe_Q2']].where(df[['Verkäufe_Q1', 'Verkäufe_Q2']] > 0, 0)
print(df_positive)
python

Der neue DataFrame df_positive zeigt nun nur noch positive Zahlen und nutzt für alles andere wie gewünscht 0:

Region    Verkäufe_Q1    Verkäufe_Q2
0     Nord                15000                20000
1        Süd                        0                25000
2        Ost                 3000                        0
3     West                        0                 5000

Werte bedingt maskieren

Pandas DataFrame.where() eignet sich auch zur Mas­kie­rung, um nur relevante Teile eines Da­ta­Frames her­vor­zu­he­ben. Hier sollen nur Werte über einem Schwel­len­wert (etwa 10000) sichtbar bleiben. Auch hier fo­kus­sie­ren wir uns auf die Zah­len­spal­ten:

# Nur Werte anzeigen, die über 10000 liegen
df_masked = df.copy()
df_masked[['Verkäufe_Q1', 'Verkäufe_Q2']] = df[['Verkäufe_Q1', 'Verkäufe_Q2']].where(df[['Verkäufe_Q1', 'Verkäufe_Q2']] > 10000)
print(df_masked)
python

Das Ergebnis df_masked zeigt nur Werte größer als 10000. Alle Werte darunter er­schei­nen als NaN:

Region    Verkäufe_Q1    Verkäufe_Q2
0     Nord            15000.0            20000.0
1        Süd                    NaN            25000.0
2        Ost                    NaN                    NaN
3     West                    NaN                    NaN
Zum Hauptmenü