# Sådan anvendes betingelser i pandas DataFrames med where()

Python- funktionen pandas `DataFrame.where()` er designet til at hjælpe med **betinget databehandling** i DataFrames. Den giver programmører mulighed for at erstatte eller maskere værdier i en [pandas DataFrame](https://www.ionos.com/da-dk/digitalguide/websteder/webudvikling/python-pandas-dataframe/) baseret på en betingelse.

## Hvad er syntaksen for pandas `DataFrame.where()`?

Funktionen `where()` kan acceptere op til fem parametre og har følgende syntaks:

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

Når det anvendes på en DataFrame, forbliver kun de værdier, der opfylder den angivne betingelse (`cond`), uændrede. Alle andre værdier erstattes med det, du angiver i parameteren `other`.

### Hvilke parametre kan bruges med pandas `DataFrame.where()`?

Pandas `DataFrame.where()` accepterer forskellige parametre, der muliggør fleksibel datastyring og -ændring:

<table>
  <thead>
    <tr>
      <th><strong>Parameter</strong></th>
      <th><strong>Beskrivelse</strong></th>
      <th><strong>Standardværdi</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`cond`</td>
      <td>Betingelse, der skal være opfyldt, for at DataFrame-værdier forbliver uændrede</td>
      <td></td>
    </tr>
    <tr>
      <td>`other`</td>
      <td>Den værdi, der erstatter værdier, der ikke opfylder betingelsen</td>
      <td></td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Når den er indstillet til `True`, vil operationen direkte ændre DataFrame.</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`axis`</td>
      <td>Angiver, hvilken akse betingelsen gælder for (`axis=0` for rækker, `axis=1` for kolonner)</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`level`</td>
      <td>Definerer niveauet for et multi-indeks, hvor betingelsen skal anvendes.</td>
      <td>`None`</td>
    </tr>
  </tbody>
</table>

## Sådan bruges pandas `DataFrame.where()`

Funktionen `where()` kan være nyttig i forskellige scenarier, der kræver betinget **databehandling**. Dette kan omfatte datarensning eller **oprettelse af nye kolonner baseret på betingelser**.

### Udskiftning af værdier baseret på betingelser

Antag, at du har en DataFrame med en virksomheds salgsresultater, og du kun vil vise de positive resultater. Negative resultater skal derimod erstattes med `0`. Du kan gøre dette med pandas `DataFrame.where()`. Lad os først oprette 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)
```

Ovenstående kode genererer 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 hjælp af `where()` kan du erstatte alle negative værdier med `0`. Sørg for, at **kun kolonner med numeriske værdier** er inkluderet, ellers fungerer det ikke.

```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 kun positive salgsresultater og erstatter negative værdier 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 af værdier ved hjælp af betingelser

Pandas `DataFrame.where()` kan også bruges til at maskere værdier. Det betyder, at kun bestemte dele af en DataFrame vises. I det følgende eksempel ønsker vi kun at vise værdier, der ligger over en bestemt tærskel (i dette tilfælde `10000`). Husk, at du skal sikre dig, at du kun 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 kun værdier, der er større end `10000`. `NaN` bruges i stedet for alle andre værdier:

```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/da-dk/digitalguide/websteder/webudvikling/python-pandas-dataframe-hvor/](https://www.ionos.com/da-dk/digitalguide/websteder/webudvikling/python-pandas-dataframe-hvor/) for AI/LLM consumption.