Hur man tillämpar villkor i pandas DataFrames med where()
Python -funktionen pandas DataFrame.where() är utformad för att underlätta villkorlig datamanipulation i DataFrames. Den gör det möjligt för programmerare att ersätta eller maskera värden i en pandas DataFrame baserat på ett villkor.
Vad är syntaxen för pandas DataFrame.where()?
Funktionen where() kan ta emot upp till fem parametrar och har följande syntax:
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)pythonNär det tillämpas på en DataFrame kommer endast de värden som uppfyller det angivna villkoret (cond) att förbli oförändrade. Alla andra värden kommer att ersättas med det du anger i parametern other.
Vilka parametrar kan användas med pandas DataFrame.where()?
Pandas DataFrame.where() accepterar olika parametrar som underlättar flexibel datahantering och modifiering:
| Parameter | Beskrivning | Standardvärde |
|---|---|---|
cond
|
Villkor som måste uppfyllas för att DataFrame-värdena ska förbli oförändrade | |
other
|
Värdet som ersätter värden som inte uppfyller villkoret | |
inplace
|
När det är inställt på True kommer operationen att direkt modifiera DataFrame.
|
False
|
axis
|
Anger vilken axel villkoret gäller för (axis=0 för rader, axis=1 för kolumner)
|
None
|
level
|
Definierar nivån för ett multiindex där villkoret ska tillämpas. | None
|
Hur man använder pandas DataFrame.where()
Funktionen where() kan vara användbar i olika scenarier som kräver villkorlig datamanipulation. Detta kan inkludera datarensning eller skapande av nya kolumner baserat på villkor.
Ersätta värden baserat på villkor
Anta att du har en DataFrame med ett företags försäljningsresultat och att du bara vill visa de positiva resultaten. Negativa resultat ska däremot ersättas med 0. Du kan göra detta med pandas DataFrame.where(). Låt oss först skapa 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 ovan genererar följande DataFrame:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South -5000 25000
2 East 3000 -7000
3 West -1000 5000Med where() kan du ersätta alla negativa värden med 0. Se till att endast kolumner med numeriska värden ingår, annars fungerar det inte.
# 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 resulterande DataFrame, df_positive, visar endast positiva försäljningsresultat och ersätter negativa värden med 0:
Region Sales_Q1 Sales_Q2
0 North 15000 20000
1 South 0 25000
2 East 3000 0
3 West 0 5000Maskering av värden med hjälp av villkor
Pandas DataFrame.where() kan också användas för att maskera värden. Det innebär att endast vissa delar av en DataFrame visas. I följande exempel vill vi endast visa värden som ligger över ett visst tröskelvärde (i detta fall 10000). Kom ihåg att du måste se till att du endast utvärderar kolumner med numeriska 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 resulterande DataFrame, df_masked, visar endast värden som är större än 10000. NaN används istället för alla andra värden:
Region Sales_Q1 Sales_Q2
0 North 15000.0 20000.0
1 South NaN 25000.0
2 East NaN NaN
3 West NaN NaN