Tutoriales Interactivos
BlogIniciar sesiónComenzar gratis
Inicio›Blog›Análisis de Datos›Cómo filtrar y seleccionar datos en pandas

Cómo filtrar y seleccionar datos en pandas

Una vez que tienes un DataFrame cargado, la operación más frecuente es seleccionar solo los datos que necesitas: ciertas columnas, ciertas filas, o una combinación de ambas. pandas tiene varias formas de hacer esto.

Seleccionar columnas

import pandas as pd

df = pd.DataFrame({
    'nombre': ['Ana', 'Carlos', 'María', 'Luis'],
    'edad':   [28, 35, 42, 29],
    'ciudad': ['Santiago', 'Lima', 'Bogotá', 'CDMX'],
    'salario': [3000, 2800, 4500, 3200]
})

# Una columna → Serie
print(df['nombre'])

# Varias columnas → DataFrame
print(df[['nombre', 'salario']])

Filtrar filas por condición

# Mayores de 30
mayores = df[df['edad'] > 30]

# Ciudad específica
santiago = df[df['ciudad'] == 'Santiago']

# Múltiples condiciones con & (and) y | (or)
filtro = df[(df['edad'] > 28) & (df['salario'] > 3000)]

# Negación con ~
no_lima = df[~(df['ciudad'] == 'Lima')]

Importante: cuando combinas condiciones, cada una va entre paréntesis.

loc: seleccionar por etiqueta

loc selecciona por nombre de índice y nombre de columna:

# Fila con índice 0, todas las columnas
print(df.loc[0])

# Filas 0 a 2, columnas 'nombre' y 'salario'
print(df.loc[0:2, ['nombre', 'salario']])

# Filtro con loc
print(df.loc[df['salario'] > 3000, ['nombre', 'salario']])

iloc: seleccionar por posición numérica

iloc selecciona por posición (como los índices de una lista):

# Primera fila
print(df.iloc[0])

# Primeras 2 filas, primeras 3 columnas
print(df.iloc[0:2, 0:3])

# Última fila
print(df.iloc[-1])

isin: filtrar por lista de valores

ciudades_latam = ['Santiago', 'Lima', 'Bogotá']
df_latam = df[df['ciudad'].isin(ciudades_latam)]

str.contains: filtrar texto parcial

# Nombres que empiecen con "A" o "C"
df_ac = df[df['nombre'].str.startswith(('A', 'C'))]

# Ciudad que contenga "o"
df_o = df[df['ciudad'].str.contains('o', case=False)]

Ejemplo completo

# Empleados de más de 30 años, salario mayor a 3000, solo nombre y salario
resultado = df.loc[
    (df['edad'] > 30) & (df['salario'] > 3000),
    ['nombre', 'salario']
]
print(resultado)

Errores frecuentes

Usar and en lugar de &: df[condicion1 and condicion2] da error. Debes usar & para AND y | para OR, con cada condición entre paréntesis.

Confundir loc e iloc: loc usa etiquetas (nombres), iloc usa posiciones numéricas. Si el índice de tu DataFrame es numérico, pueden dar resultados similares pero son conceptualmente distintos.

SettingWithCopyWarning: cuando filtras y luego modificas el resultado, pandas puede advertir que estás modificando una copia. Usa .copy(): subdf = df[filtro].copy().

Aprende haciendo, no solo leyendo

Leer es el primer paso. El verdadero aprendizaje ocurre cuando practicas con ejercicios reales de SQL y recibes corrección inmediata de IA.

Comenzar gratis →
Desafío Latam
+56 9 5117 7975
+52 1 55 4047 7251
[email protected]

Carreras

  • Full Stack JavaScript
  • Diseño UX/UI
  • Data Science
  • Data Analytics

Comunidad

  • Blog
  • Becas
  • Trabaja con Nosotros
  • Políticas de Calidad

Síguenos

© 2026 Desafío Latam. Todos los derechos reservados.