Sådan anvendes betingelser i pandas DataFrames med where()
Python- funktionen pandas DataFrame.where() er designet til at hjælpe med betinget databehandling i DataFrames. Den giver programmører mulighed for at erstatte eller maskere værdier i en pandas DataFrame baseret på en betingelse.
Hvad er syntaksen for pandas DataFrame.where()?
Funktionen where() kan acceptere op til fem parametre og har følgende syntaks:
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)pythonNår det anvendes på en DataFrame, forbliver kun de værdier, der opfylder den angivne betingelse (cond), uændrede. Alle andre værdier erstattes med det, du angiver i parameteren other.
Hvilke parametre kan bruges med pandas DataFrame.where()?
Pandas DataFrame.where() accepterer forskellige parametre, der muliggør fleksibel datastyring og -ændring:
| Parameter | Beskrivelse | Standardværdi |
|---|---|---|
cond
|
Betingelse, der skal være opfyldt, for at DataFrame-værdier forbliver uændrede | |
other
|
Den værdi, der erstatter værdier, der ikke opfylder betingelsen | |
inplace
|
Når den er indstillet til True, vil operationen direkte ændre DataFrame.
|
False
|
axis
|
Angiver, hvilken akse betingelsen gælder for (axis=0 for rækker, axis=1 for kolonner)
|
None
|
level
|
Definerer niveauet for et multi-indeks, hvor betingelsen skal anvendes. | None
|
Sådan bruges pandas DataFrame.where()
Funktionen where() kan være nyttig i forskellige scenarier, der kræver betinget databehandling. Dette kan omfatte datarensning eller oprettelse af nye kolonner baseret på betingelser.
Udskiftning af værdier baseret på betingelser
Antag, at du har en DataFrame med en virksomheds salgsresultater, og du kun vil vise de positive resultater. Negative resultater skal derimod erstattes med 0. Du kan gøre dette med pandas DataFrame.where(). Lad os først oprette en DataFrame:
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)pythonOvenstående kode genererer følgende DataFrame:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South -5000 25000
2 East 3000 -7000
3 West -1000 5000Ved hjælp af where() kan du erstatte alle negative værdier med 0. Sørg for, at kun kolonner med numeriske værdier er inkluderet, ellers fungerer det ikke.
# 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)pythonDen resulterende DataFrame, df_positive, viser kun positive salgsresultater og erstatter negative værdier med 0:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South 0 25000
2 East 3000 0
3 West 0 5000Maskering af værdier ved hjælp af betingelser
Pandas DataFrame.where() kan også bruges til at maskere værdier. Det betyder, at kun bestemte dele af en DataFrame vises. I det følgende eksempel ønsker vi kun at vise værdier, der ligger over en bestemt tærskel (i dette tilfælde 10000). Husk, at du skal sikre dig, at du kun evaluerer kolonner med numeriske data:
# 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)pythonDen resulterende DataFrame, df_masked, viser kun værdier, der er større end 10000. NaN bruges i stedet for alle andre værdier:
Region Sales_Q1 Sales_Q2
0 North 15000.0 20000.0
1 South NaN 25000.0
2 East NaN NaN
3 West NaN NaN