Python- funk­tio­nen pandas DataFrame.where() er designet til at hjælpe med betinget da­ta­be­hand­ling i Da­ta­F­ra­mes. Den giver pro­gram­mø­rer mulighed for at erstatte eller maskere værdier i en pandas DataFrame baseret på en be­tin­gel­se.

Hvad er syntaksen for pandas DataFrame.where()?

Funk­tio­nen where() kan acceptere op til fem parametre og har følgende syntaks:

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

Når det anvendes på en DataFrame, forbliver kun de værdier, der opfylder den angivne be­tin­gel­se (cond), uændrede. Alle andre værdier erstattes med det, du angiver i pa­ra­me­te­ren other.

Hvilke parametre kan bruges med pandas DataFrame.where()?

Pandas DataFrame.where() ac­cep­te­rer for­skel­li­ge parametre, der muliggør fleksibel da­ta­sty­ring og -ændring:

Parameter Be­skri­vel­se Stan­dard­vær­di
cond Be­tin­gel­se, der skal være opfyldt, for at DataFrame-værdier forbliver uændrede
other Den værdi, der erstatter værdier, der ikke opfylder be­tin­gel­sen
inplace Når den er indstil­let til True, vil ope­ra­tio­nen direkte ændre DataFrame. False
axis Angiver, hvilken akse be­tin­gel­sen gælder for (axis=0 for rækker, axis=1 for kolonner) None
level Definerer niveauet for et multi-indeks, hvor be­tin­gel­sen skal anvendes. None

Sådan bruges pandas DataFrame.where()

Funk­tio­nen where() kan være nyttig i for­skel­li­ge scenarier, der kræver betinget da­ta­be­hand­ling. Dette kan omfatte da­ta­rens­ning eller op­ret­tel­se af nye kolonner baseret på be­tin­gel­ser.

Ud­skift­ning af værdier baseret på be­tin­gel­ser

Antag, at du har en DataFrame med en virk­som­heds salgs­re­sul­ta­ter, og du kun vil vise de positive re­sul­ta­ter. Negative re­sul­ta­ter 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)
python

Oven­stå­en­de 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            5000

Ved hjælp af where() kan du erstatte alle negative værdier med 0. Sørg for, at kun kolonner med numeriske værdier er in­klu­de­ret, 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)
python

Den re­sul­te­ren­de DataFrame, df_positive, viser kun positive salgs­re­sul­ta­ter 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            5000

Maskering af værdier ved hjælp af be­tin­gel­ser

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

Den re­sul­te­ren­de 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
Gå til ho­ved­me­nu­en