Cómo buscar fácilmente valores en una columna de un DataFrame de Pandas
Updated on
Buscar valores en una columna de un DataFrame de Pandas es una operación fundamental para filtrar, limpiar y analizar datos. Pandas ofrece muchas formas potentes de búsqueda —incluyendo indexación booleana, isin(), query() y operaciones de cadenas— que hacen esta tarea rápida e intuitiva.
Esta guía actualizada cubre las técnicas más útiles y modernas para buscar valores en un DataFrame, junto con ejemplos que puedes aplicar directamente en flujos de trabajo reales.
¿Quieres crear visualizaciones de datos a partir de DataFrames de Pandas sin escribir código?
PyGWalker convierte tu DataFrame en una interfaz interactiva tipo Tableau dentro de Jupyter Notebook.
PyGWalker en GitHub (opens in a new tab)
Conceptos básicos de DataFrame de Pandas
Un DataFrame de Pandas es una estructura tabular bidimensional con filas y columnas etiquetadas. Aquí tienes un ejemplo sencillo:
import pandas as pd
data = {
'Name': ['John', 'Emma', 'Peter', 'David', 'Sophie'],
'Age': [27, 21, 24, 30, 29],
'Gender': ['Male', 'Female', 'Male', 'Male', 'Female'],
'City': ['New York', 'London', 'Paris', 'Tokyo', 'Rio de Janeiro']
}
df = pd.DataFrame(data)
print(df)Salida:
Name Age Gender City
0 John 27 Male New York
1 Emma 21 Female London
2 Peter 24 Male Paris
3 David 30 Male Tokyo
4 Sophie 29 Female Rio de JaneiroBúsqueda de valores en una columna de un DataFrame
1. Buscar una coincidencia exacta (indexación booleana)
result = df[df['Age'] == 27]
print(result)Salida:
Name Age Gender City
0 John 27 Male New YorkPuedes usar cualquier operador de comparación:
| Operador | Significado |
|---|---|
== | igual |
!= | distinto |
> / < | mayor / menor |
>= / <= | mayor o igual / menor o igual |
Ejemplo: encontrar filas donde Age ≥ 25
df[df['Age'] >= 25]2. Buscar múltiples valores usando isin()
cities = ['Paris', 'Tokyo']
df[df['City'].isin(cities)]Salida:
Name Age Gender City
2 Peter 24 Male Paris
3 David 30 Male TokyoUsa ~df['col'].isin() para excluir valores.
3. Buscar usando query() (legible y rápido)
query() te permite filtrar filas usando una sintaxis similar a SQL, ideal para la legibilidad.
df.query("Age == 27")O varias condiciones:
df.query("Age > 25 and Gender == 'Female'")A menudo esto da lugar a un código más limpio que la indexación booleana anidada.
4. Buscar patrones de texto (str.contains())
Es útil para filtrar columnas de texto.
Contiene una subcadena
df[df['City'].str.contains('on', case=False, na=False)]Empieza o termina con
df[df['Name'].str.startswith('J')]
df[df['City'].str.endswith('o')]5. Buscar valores faltantes / no faltantes
df[df['City'].isna()] # valores faltantes
df[df['City'].notna()] # valores no faltantes6. Buscar en varias columnas
Encontrar filas donde cualquier columna coincida con un valor:
df[df.eq('Male').any(axis=1)]Encontrar filas donde todas las condiciones se cumplan:
df[(df['Gender'] == 'Female') & (df['Age'] > 25)]Consejos de rendimiento (realistas y precisos)
Algunos consejos de rendimiento se malinterpretaron en tutoriales antiguos.
Aquí tienes recomendaciones correctas:
✔ 1. Convierte columnas a category si tienen muchos valores repetidos
Esto acelera las comparaciones:
df['City'] = df['City'].astype('category')✔ 2. Usa arrays de NumPy para conjuntos de datos muy grandes
import numpy as np
ages = df['Age'].to_numpy()
df[ages == 27]✔ 3. Evita apply() para búsquedas
Las operaciones vectorizadas (indexación booleana, isin(), query()) son siempre más rápidas.
❌ Eliminado: “.loc[] es más rápido que la indexación booleana”
Esto es incorrecto: se comportan igual internamente.
.loc[] se usa para selección basada en etiquetas, no como mejora de velocidad.
⚠ Sobre searchsorted()
searchsorted() solo funciona correctamente si la columna está ordenada y no confirma que el valor exista.
Por ejemplo:
df_sorted = df.sort_values('Age')
idx = df_sorted['Age'].searchsorted(27)Esto encuentra la posición de inserción, no necesariamente la fila con Age = 27.
Úsalo solo para flujos de trabajo avanzados.
Conclusión
Buscar valores en una columna de Pandas es esencial para la exploración y limpieza de datos. Pandas ofrece muchas formas eficientes de búsqueda:
- Indexación booleana para coincidencias exactas
isin()para múltiples valoresquery()para filtrado limpio, similar a SQL- Búsqueda de texto con
str.contains() - Filtrado de valores faltantes
- Filtrado en múltiples columnas
Estos métodos te ayudan a extraer rápidamente y con precisión exactamente los datos que necesitas.
Enlaces
- Cómo convertir un DataFrame de Pandas en una lista de Python
- Cómo ordenar un DataFrame de Pandas por índice
- Cómo convertir una Series de Pandas en un DataFrame
- Cómo crear una lista de nombres de columnas en un DataFrame de PySpark
- Cómo agregar (append) un DataFrame de Pandas en Python
- Cómo renombrar una columna en un DataFrame de Pandas
Preguntas frecuentes
-
¿Cómo busco un valor específico en una columna de un DataFrame?
Usa indexación booleana:df[df['Age'] == 27] -
¿Cómo obtengo un valor específico de una columna?
Usa índice de fila + nombre de columna:df['Age'][0] -
¿Cómo obtengo un único valor de forma rápida?
Usa.ato.iat:df.at[0, 'Age'] df.iat[0, 1]
;
