Python -funk­tio­nen pandas DataFrame.where() är utformad för att un­der­lät­ta vill­kor­lig da­ta­ma­ni­pu­la­tion i Da­taFrames. Den gör det möjligt för pro­gram­me­ra­re att ersätta eller maskera värden i en pandas DataFrame baserat på ett villkor.

Vad är syntaxen för pandas DataFrame.where()?

Funk­tio­nen where() kan ta emot upp till fem pa­ra­met­rar 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­änd­ra­de. Alla andra värden kommer att ersättas med det du anger i pa­ra­me­tern other.

Vilka pa­ra­met­rar kan användas med pandas DataFrame.where()?

Pandas DataFrame.where() ac­cep­te­rar olika pa­ra­met­rar som un­der­lät­tar flexibel da­ta­han­te­ring och mo­di­fi­e­ring:

Parameter Be­skriv­ning Stan­dard­vär­de
cond Villkor som måste uppfyllas för att DataFrame-värdena ska förbli oför­änd­ra­de
other Värdet som ersätter värden som inte uppfyller villkoret
inplace När det är inställt på True kommer ope­ra­tio­nen 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 De­fi­ni­e­rar nivån för ett mul­ti­in­dex där villkoret ska tillämpas. None

Hur man använder pandas DataFrame.where()

Funk­tio­nen where() kan vara användbar i olika scenarier som kräver vill­kor­lig da­ta­ma­ni­pu­la­tion. Detta kan inkludera da­ta­rens­ning 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ör­sälj­nings­re­sul­tat och att du bara vill visa de positiva re­sul­ta­ten. 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 re­sul­te­ran­de DataFrame, df_positive, visar endast positiva för­sälj­nings­re­sul­tat 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ös­kel­vär­de (i detta fall 10000). Kom ihåg att du måste se till att du endast ut­vär­de­rar 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 re­sul­te­ran­de 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