Hvordan bruke betingelser i pandas DataFrames med where()
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)pythonNå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)pythonKoden 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 5000Ved å 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)pythonDen 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 5000Maskering 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)pythonDen 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