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

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

Koden 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            5000

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

Den 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            5000

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

Den 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
Gå till huvudmeny