# Πώς να εφαρμόσετε συνθήκες σε DataFrames pandas με τη συνάρτηση where()

Η συνάρτηση Python pandas `DataFrame.where()` έχει σχεδιαστεί για να βοηθάει στον **χειρισμό δεδομένων υπό όρους** σε DataFrames. Επιτρέπει στους προγραμματιστές να αντικαθιστούν ή να αποκρύψουν τιμές σε ένα [pandas DataFrame](https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/python-pandas-dataframe/) με βάση έναν όρο.

## Ποια είναι η σύνταξη για το pandas `DataFrame.where()`;

Η συνάρτηση `where()` μπορεί να δέχεται έως και πέντε παραμέτρους και έχει την ακόλουθη σύνταξη:

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

Όταν εφαρμόζεται σε ένα DataFrame, μόνο οι τιμές που πληρούν την καθορισμένη συνθήκη (`cond`) θα παραμείνουν ως έχουν. Οποιεσδήποτε άλλες τιμές θα αντικατασταθούν με αυτές που καθορίζετε στην παράμετρο `other`.

### Ποιες παράμετροι μπορούν να χρησιμοποιηθούν με το pandas `DataFrame.where()`;

Το Pandas `DataFrame.where()` δέχεται διαφορετικές παραμέτρους που διευκολύνουν την ευέλικτη διαχείριση και τροποποίηση δεδομένων:

<table>
  <thead>
    <tr>
      <th><strong>Παράμετρος</strong></th>
      <th><strong>Περιγραφή</strong></th>
      <th><strong>Προεπιλεγμένη τιμή</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`cond`</td>
      <td>Συνθήκη που πρέπει να πληρούται για να παραμείνουν αμετάβλητες οι τιμές του DataFrame</td>
      <td></td>
    </tr>
    <tr>
      <td>`other`</td>
      <td>Η τιμή που αντικαθιστά τις τιμές που δεν πληρούν την προϋπόθεση</td>
      <td></td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Όταν ορίζεται σε `True`, η λειτουργία θα τροποποιήσει άμεσα το DataFrame</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`axis`</td>
      <td>Καθορίζει σε ποιον άξονα εφαρμόζεται η συνθήκη (`axis=0` για σειρές, `axis=1` για στήλες)</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`level`</td>
      <td>Καθορίζει το επίπεδο ενός πολλαπλού δείκτη όπου πρέπει να εφαρμόζεται η συνθήκη.</td>
      <td>`None`</td>
    </tr>
  </tbody>
</table>

## Πώς να χρησιμοποιήσετε pandas `DataFrame.where()`

Η συνάρτηση `where()` μπορεί να είναι χρήσιμη σε διάφορα σενάρια που απαιτούν **χειρισμό δεδομένων** υπό όρους. Αυτό μπορεί να περιλαμβάνει τον καθαρισμό δεδομένων ή **τη δημιουργία νέων στηλών με βάση συγκεκριμένες συνθήκες**.

### Αντικατάσταση τιμών με βάση τις συνθήκες

Ας υποθέσουμε ότι έχετε ένα DataFrame με τα αποτελέσματα πωλήσεων μιας εταιρείας και θέλετε να εμφανίσετε μόνο τα θετικά αποτελέσματα. Τα αρνητικά αποτελέσματα, από την άλλη πλευρά, πρέπει να αντικατασταθούν με `0`. Μπορείτε να το κάνετε αυτό με το pandas `DataFrame.where()`. Πρώτα, ας δημιουργήσουμε ένα 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)
```

Ο παραπάνω κώδικας παράγει το ακόλουθο DataFrame:

```none
Region    Sales_Q1    Sales_Q2
0    North         15000         20000
1    South         -5000         25000
2     East            3000         -7000
3     West         -1000            5000
```

Χρησιμοποιώντας `where()`, μπορείτε να αντικαταστήσετε όλες τις αρνητικές τιμές με `0`. Βεβαιωθείτε ότι περιλαμβάνονται **μόνο στήλες με αριθμητικές τιμές**, διαφορετικά δεν θα λειτουργήσει.

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

Το DataFrame που προκύπτει, `df_positive`, εμφανίζει μόνο θετικά αποτελέσματα πωλήσεων και αντικαθιστά τις αρνητικές τιμές με `0`:

```none
Region    Sales_Q1    Sales_Q2
0    North         15000         20000
1    South                 0         25000
2     East            3000                 0
3     West                 0            5000
```

### Κάλυψη τιμών χρησιμοποιώντας συνθήκες

Το Pandas `DataFrame.where()` μπορεί επίσης να χρησιμοποιηθεί για την απόκρυψη τιμών. Αυτό σημαίνει ότι θα εμφανίζονται μόνο συγκεκριμένα τμήματα ενός DataFrame. Στο παρακάτω παράδειγμα, θέλουμε να εμφανίσουμε μόνο τιμές που είναι πάνω από ένα συγκεκριμένο όριο (στην περίπτωση αυτή, `10000`). Να θυμάστε ότι πρέπει να βεβαιωθείτε ότι αξιολογείτε μόνο στήλες με αριθμητικά δεδομένα:

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

Το DataFrame που προκύπτει, `df_masked`, εμφανίζει μόνο τιμές μεγαλύτερες από `10000`. `NaN` χρησιμοποιείται αντί για όλες τις άλλες τιμές:

```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/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/python-pandas-dataframe-opoy/](https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/python-pandas-dataframe-opoy/) for AI/LLM consumption.