Python-funksjonen pandas DataFrame.where() er utviklet for å hjelpe til med betinget datamanipulering i DataFrames. Den lar programmerere erstatte eller maskere verdier i en pandas DataFrame basert på en betingelse.

Hva er syntaksen for pandas DataFrame.where()?

Funksjonen where() kan akseptere opptil fem parametere og har følgende syntaks:

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

Når dette brukes på en DataFrame, vil bare verdiene som oppfyller den angitte betingelsen (cond) forbli som de er. Alle andre verdier vil bli erstattet med det du angir i parameteren other.

Hvilke parametere kan brukes med pandas DataFrame.where()?

Pandas DataFrame.where() aksepterer ulike parametere som muliggjør fleksibel datahåndtering og modifisering:

Parameter Beskrivelse Standardverdi
cond Betingelse som må oppfylles for at DataFrame-verdiene skal forbli uendret
other Verdien som erstatter verdier som ikke oppfyller betingelsen
inplace Når den er satt til True, vil operasjonen direkte endre DataFrame. False
axis Angir hvilken akse betingelsen gjelder for (axis=0 for rader, axis=1 for kolonner) None
level Definerer nivået på et multi-indeks hvor betingelsen skal gjelde. None

Hvordan bruke pandas DataFrame.where()

Funksjonen where() kan være nyttig i ulike scenarier som krever betinget datamanipulering. Dette kan omfatte datarengjøring eller oppretting av nye kolonner basert på betingelser.

Erstatte verdier basert på betingelser

Anta at du har en DataFrame med et selskaps salgsresultater, og at du bare vil vise de positive resultatene. Negative resultater skal derimot erstattes med 0. Du kan gjøre dette med pandas DataFrame.where(). Først skal vi opprette 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

Koden ovenfor produserer 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 å bruke where() kan du erstatte alle negative verdier med 0. Sørg for at bare kolonner med numeriske verdier er inkludert, ellers vil det ikke fungere.

# 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 resulterende DataFrame, df_positive, viser bare positive salgsresultater og erstatter negative verdier med 0:

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

Maskering av verdier ved hjelp av betingelser

Pandas DataFrame.where() kan også brukes til å maskere verdier. Dette betyr at bare bestemte deler av en DataFrame vil vises. I det følgende eksemplet ønsker vi bare å vise verdier som ligger over en viss terskel (i dette tilfellet 10000). Husk at du må sørge for at du bare 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 resulterende DataFrame, df_masked, viser bare verdier som er større enn 10000. NaN brukes i stedet for alle andre verdier:

Region    Sales_Q1    Sales_Q2
0    North     15000.0     20000.0
1    South             NaN     25000.0
2     East             NaN             NaN
3     West             NaN             NaN
Go to Main Menu