Puedes usar la función DataFrame.where() de la Bi­blio­te­ca Python Pandas para realizar ma­ni­pu­la­cio­nes co­n­di­cio­na­les de datos en Da­ta­Fra­mes. Esta función te permite re­em­pla­zar o en­ma­s­ca­rar valores en un DataFrame de Pandas según una condición es­pe­cí­fi­ca.

Hosting
Hosting de primera al mejor precio
  • 3x más rápido, ahora un 60 % de ahorro
  • Alta di­s­po­ni­bi­li­dad >99.99 %
  • Solo en IONOS: hasta 500 GB incluidos

Sintaxis de Pandas DataFrame.where()

La función where() acepta hasta cinco pa­rá­me­tros y sigue la siguiente sintaxis básica:

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

Esta función se aplica a un DataFrame, y solo los valores que cumplen con la condición es­pe­ci­fi­ca­da (cond) pe­r­ma­ne­cen sin cambios. Todos los demás valores se re­em­pla­zan por los definidos en other.

Pa­rá­me­tros re­le­va­n­tes

Pandas DataFrame.where() acepta varios pa­rá­me­tros que permiten una ma­ni­pu­la­ción flexible de los datos:

Parámetro De­s­cri­p­ción Valor pre­de­te­r­mi­na­do
cond Condición que debe cumplirse para que los valores en el DataFrame se mantengan sin cambios
other Valor por el cual se re­em­pla­za­rán los valores que no cumplan la condición
inplace Si es True, la operación se realiza di­re­c­ta­me­n­te sobre el DataFrame existente False
axis Es­pe­ci­fi­ca en qué eje se aplica la condición (axis=0/filas o axis=1/columnas) None
level Es­pe­ci­fi­ca en qué nivel del multi-índice se debe aplicar la condición None

Cómo utilizar Pandas DataFrame.where()

La función where() se puede utilizar en una variedad de si­tua­cio­nes en las que se requieran ma­ni­pu­la­cio­nes co­n­di­cio­na­les de datos. Esto incluye, por ejemplo, la limpieza de datos o la creación de nuevas columnas basadas en co­n­di­cio­nes.

Reemplazo co­n­di­cio­nal de valores

Su­po­n­ga­mos que tienes un DataFrame con los re­su­l­ta­dos de ventas de una empresa y deseas mostrar solo los re­su­l­ta­dos positivos. Todos los re­su­l­ta­dos negativos deben ser re­em­pla­za­dos por 0. Esto se puede lograr con la función Pandas DataFrame.where(). Primero, se crea el DataFrame:

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

El código anterior genera el siguiente DataFrame:

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 re­em­pla­zar todos los valores negativos por 0. Sin embargo, debes ase­gu­rar­te de co­n­si­de­rar solo las columnas que contienen valores numéricos, ya que de lo contrario la co­m­pa­ra­ción no fu­n­cio­na­rá.

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

El DataFrame re­su­l­ta­n­te df_positive contiene solo los re­su­l­ta­dos positivos de ventas y reemplaza los valores negativos por 0, tal como se desea:

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

Filtrado co­n­di­cio­nal de valores

Pandas DataFrame.where() también se puede utilizar para en­ma­s­ca­rar 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 es­pe­cí­fi­co (en este caso, 10000). Nue­va­me­n­te, debes ase­gu­rar­te de que solo se co­n­si­de­ren las columnas numéricas:

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

En este caso, el DataFrame re­su­l­ta­n­te df_masked solo muestra los valores que son mayores a 10000. Todos los demás valores se presentan como NaN:

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
Ir al menú principal