De Python pandas DataFrame.where() is ontworpen om te helpen bij het con­di­ti­o­neel ma­ni­pu­le­ren van gegevens in Da­taF­ra­mes. Hiermee kunnen pro­gram­meurs waarden in een pandas DataFrame vervangen of maskeren op basis van een voor­waar­de.

Wat is de syntaxis voor pandas DataFrame.where()?

De functie where() kan maximaal vijf pa­ra­me­ters ac­cep­te­ren en heeft de volgende syntaxis:

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

Wanneer toegepast op een DataFrame, blijven alleen de waarden die aan de opgegeven voor­waar­de (cond) voldoen on­ge­wij­zigd. Alle andere waarden worden vervangen door wat u opgeeft in de parameter other.

Welke pa­ra­me­ters kunnen worden gebruikt met pandas DataFrame.where()?

Pandas DataFrame.where() ac­cep­teert ver­schil­len­de pa­ra­me­ters die flexibel ge­ge­vens­be­heer en -wijziging mogelijk maken:

Parameter Be­schrij­ving Stan­daard­waar­de
cond Voor­waar­de waaraan moet worden voldaan om DataFrame-waarden on­ge­wij­zigd te laten
other De waarde die waarden vervangt die niet aan de voor­waar­de voldoen
inplace Wanneer ingesteld op True, zal de bewerking het DataFrame direct wijzigen. False
axis Geeft aan op welke as de voor­waar­de van toe­pas­sing is (axis=0 voor rijen, axis=1 voor kolommen) None
level De­fi­ni­eert het niveau van een multi-index waarop de voor­waar­de moet worden toegepast. None

Hoe pandas DataFrame.where() te gebruiken

De functie where() kan nuttig zijn in ver­schil­len­de scenario’s waarin voor­waar­de­lij­ke ge­ge­vens­ma­ni­pu­la­tie vereist is. Dit kan bij­voor­beeld het opschonen van gegevens zijn of het aanmaken van nieuwe kolommen op basis van voor­waar­den.

Waarden vervangen op basis van voor­waar­den

Stel dat u een DataFrame hebt met de ver­koop­re­sul­ta­ten van een bedrijf en u wilt alleen de positieve re­sul­ta­ten weergeven. Negatieve re­sul­ta­ten moeten daar­en­te­gen worden vervangen door 0. U kunt dit doen met pandas DataFrame.where(). Laten we eerst een DataFrame maken:

import pandas as pd
# Create a sample DataFrame
data = {
    'Region': ['North', 'South', 'East', 'West'],
    'Sales_Q1': [15000, -5000, 3000, -1000],
    'Sales_Q2': [20000, 25000, -7000, 5000]
}
df = pd.DataFrame(data)
print(df)
python

De bo­ven­staan­de code pro­du­ceert het volgende DataFrame:

Region    Sales_Q1    Sales_Q2
0    North         15000         20000
1    South         -5000         25000
2     East            3000         -7000
3     West         -1000            5000

Met where() kunt u alle negatieve waarden vervangen door 0. Zorg ervoor dat alleen kolommen met numerieke waarden worden opgenomen, anders werkt het niet.

# Replacing values using conditions
df_positive = df.copy()
df_positive[['Sales_Q1', 'Sales_Q2']] = df[['Sales_Q1', 'Sales_Q2']].where(df[['Sales_Q1', 'Sales_Q2']] > 0, 0)
print(df_positive)
python

Het re­sul­te­ren­de DataFrame, df_positive, geeft alleen positieve ver­koop­re­sul­ta­ten weer en vervangt negatieve waarden door 0:

Region    Sales_Q1    Sales_Q2
0    North         15000         20000
1    South                 0         25000
2     East            3000                 0
3     West                 0            5000

Waarden maskeren met behulp van voor­waar­den

Pandas DataFrame.where() kan ook worden gebruikt om waarden te maskeren. Dit betekent dat alleen spe­ci­fie­ke delen van een DataFrame worden weer­ge­ge­ven. In het volgende voorbeeld willen we alleen waarden weergeven die boven een bepaalde drem­pel­waar­de liggen (in dit geval 10000). Vergeet niet dat u ervoor moet zorgen dat u alleen kolommen met numerieke gegevens evalueert:

# Only display values over 10000
df_masked = df.copy()
df_masked[['Sales_Q1', 'Sales_Q2']] = df[['Sales_Q1', 'Sales_Q2']].where(df[['Sales_Q1', 'Sales_Q2']] > 10000)
print(df_masked)
python

Het re­sul­te­ren­de DataFrame, df_masked, geeft alleen waarden weer die groter zijn dan 10000. NaN wordt gebruikt in plaats van alle andere waarden:

Region    Sales_Q1    Sales_Q2
0    North     15000.0     20000.0
1    South             NaN     25000.0
2     East             NaN             NaN
3     West             NaN             NaN
Ga naar hoofdmenu