# Aplicar condiciones en DataFrames con Pandas DataFrame.where()

Puedes usar la función `DataFrame.where()` de la [Biblioteca Python Pandas](https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/python-pandas/) para realizar **manipulaciones condicionales de datos** en DataFrames. Esta función te permite reemplazar o enmascarar valores en un [DataFrame de Pandas](https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/dataframes-de-pandas-python/) según una condición específica.

## Sintaxis de Pandas `DataFrame.where()`

La función `where()` acepta hasta cinco parámetros y sigue la siguiente sintaxis básica:

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

Esta función se aplica a un DataFrame, y solo los valores que cumplen con la condición especificada (`cond`) permanecen sin cambios. Todos los demás valores se reemplazan por los definidos en `other`.

### Parámetros relevantes

Pandas `DataFrame.where()` acepta varios parámetros que permiten una manipulación flexible de los datos:

<table>
  <thead>
    <tr>
      <th><strong>Parámetro</strong></th>
      <th><strong>Descripción</strong></th>
      <th><strong>Valor predeterminado</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`cond`</td>
      <td>Condición que debe cumplirse para que los valores en el DataFrame se mantengan sin cambios</td>
      <td></td>
    </tr>
    <tr>
      <td>`other`</td>
      <td>Valor por el cual se reemplazarán los valores que no cumplan la condición</td>
      <td></td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Si es `True`, la operación se realiza directamente sobre el DataFrame existente</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`axis`</td>
      <td>Especifica en qué eje se aplica la condición (`axis=0`/filas o `axis=1`/columnas)</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`level`</td>
      <td>Especifica en qué nivel del multi-índice se debe aplicar la condición</td>
      <td>`None`</td>
    </tr>
  </tbody>
</table>

## Cómo utilizar Pandas `DataFrame.where()`

La función `where()` se puede utilizar en una variedad de situaciones en las que se requieran **manipulaciones condicionales de datos**. Esto incluye, por ejemplo, la limpieza de datos o la **creación de nuevas columnas basadas en condiciones**.

### Reemplazo condicional de valores

Supongamos que tienes un DataFrame con los resultados de ventas de una empresa y deseas mostrar solo los resultados positivos. Todos los resultados negativos deben ser reemplazados por 0. Esto se puede lograr con la función Pandas `DataFrame.where()`. Primero, se crea el DataFrame:

```python
import pandas as pd
# Crear un DataFrame de ejemplo
data = {
    'Región': ['Norte', 'Sur', 'Este', 'Oeste'],
    'Ventas_Q1': [15000, -5000, 3000, -1000],
    'Ventas_Q2': [20000, 25000, -7000, 5000]
}
df = pd.DataFrame(data)
print(df)
```

El código anterior genera el siguiente DataFrame:

```none
Región  Ventas_Q1  Ventas_Q2
0    Norte        15000        20000
1      Sur        -5000        25000
2     Este         3000        -7000
3    Oeste        -1000         5000
```

Con una llamada a `where()` puedes reemplazar todos los valores negativos por `0`. Sin embargo, debes asegurarte de **considerar solo las columnas que contienen valores numéricos**, ya que de lo contrario la comparación no funcionará.

```python
# Reemplazo condicional de valores
df_positive = df.copy()
df_positive[['Ventas_Q1', 'Ventas_Q2']] = df[['Ventas_Q1', 'Ventas_Q2']].where(df[['Ventas_Q1', 'Ventas_Q2']] > 0, 0)
print(df_positive)
```

El DataFrame resultante `df_positive` contiene solo los resultados positivos de ventas y reemplaza los valores negativos por `0`, tal como se desea:

```none
Región     Ventas_Q1     Ventas_Q2
0    Norte          15000        20000
1      Sur                0        25000
2     Este            3000             0
3    Oeste                0         5000
```

### Filtrado condicional de valores

Pandas `DataFrame.where()` también se puede utilizar para enmascarar o filtrar valores, es decir, para mostrar solo ciertas partes de un DataFrame. En el siguiente ejemplo, el DataFrame solo mostrará los valores que están por encima de un umbral específico (en este caso, `10000`). Nuevamente, debes asegurarte de que solo se consideren las columnas numéricas:

```python
# Mostrar solo los valores mayores a 10000
df_masked = df.copy()
df_masked[['Ventas_Q1', 'Ventas_Q2']] = df[['Ventas_Q1', 'Ventas_Q2']].where(df[['Ventas_Q1', 'Ventas_Q2']] > 10000)
print(df_masked)
```

En este caso, el DataFrame resultante `df_masked` solo muestra los valores que son mayores a `10000`. Todos los demás valores se presentan como `NaN`:

```none
Región     Ventas_Q1     Ventas_Q2
0    Norte        15000.0        20000.0
1      Sur             NaN        25000.0
2     Este             NaN             NaN
3    Oeste             NaN             NaN
```


This is a markdown version of: [https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/funcion-where-para-dataframes-de-pandas-en-python/](https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/funcion-where-para-dataframes-de-pandas-en-python/) for AI/LLM consumption.