# 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](https://www.ionos.com/nb-no/digitalguide/nettsteder/webutvikling/python-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:

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

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:

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

## 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:

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

Koden ovenfor produserer følgende DataFrame:

```none
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.

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

Den resulterende DataFrame, `df_positive`, viser bare positive salgsresultater og erstatter negative verdier med `0`:

```none
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:

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

Den resulterende DataFrame, `df_masked`, viser bare verdier som er større enn `10000`. `NaN` brukes i stedet for alle andre verdier:

```none
Region    Sales_Q1    Sales_Q2
0    North     15000.0     20000.0
1    South             NaN     25000.0
2     East             NaN             NaN
3     West             NaN             NaN
```


This is a markdown version of: [https://www.ionos.com/nb-no/digitalguide/nettsteder/webutvikling/python-pandas-dataframe-hvor/](https://www.ionos.com/nb-no/digitalguide/nettsteder/webutvikling/python-pandas-dataframe-hvor/) for AI/LLM consumption.