Aplicar condiciones en DataFrames con Pandas DataFrame.where()
Puedes usar la función DataFrame.where()
de la Biblioteca Python Pandas para realizar manipulaciones condicionales de datos en DataFrames. Esta función te permite reemplazar o enmascarar valores en un DataFrame de Pandas según una condición específica.
- Rápido, seguro, flexible y escalable
- Seguro con SSL y protección DDoS
- Dominio y asesor personal incluidos
Sintaxis de Pandas DataFrame.where()
La función where()
acepta hasta cinco parámetros y sigue la siguiente sintaxis básica:
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)
pythonEsta 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:
Parámetro | Descripción | Valor predeterminado |
---|---|---|
cond
|
Condición que debe cumplirse para que los valores en el DataFrame se mantengan sin cambios | |
other
|
Valor por el cual se reemplazarán los valores que no cumplan la condición | |
inplace
|
Si es True , la operación se realiza directamente sobre el DataFrame existente
|
False
|
axis
|
Especifica en qué eje se aplica la condición (axis=0 /filas o axis=1 /columnas)
|
None
|
level
|
Especifica 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 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:
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)
pythonEl 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 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á.
# 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)
pythonEl DataFrame resultante df_positive
contiene solo los resultados 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 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:
# 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)
pythonEn 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
:
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