Pandas & NumPy Academy · Lección

Selección de columnas y filas

Seleccione una o varias columnas con notación de corchetes y obtenga filas por etiqueta y posición mediante .loc y .iloc.

Lección 2 de 413 pasos

Selección de columnas y filas es una lección gratuita de Pandas & NumPy Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Pandas & NumPy Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.

Seleccionar una sola columna

Acceda a una sola columna por su nombre mediante la notación de corchetes df['col'], que devuelve una Serie. También puede usar la notación de punto df.col cuando el nombre de la columna sea un identificador válido de Python y no contenga espacios. La notación de corchetes siempre es segura; la notación de punto falla con nombres que coinciden con métodos del DataFrame, como count o mean.

import pandas as pd

df = pd.DataFrame({'name': ['Alice', 'Bob'], 'score': [90, 75]})
print(df['name'])     # Series
print(type(df['name']))  # pandas.core.series.Series

Seleccionar varias columnas

Para seleccionar varias columnas, pase una lista de nombres de columnas dentro de los corchetes: df[['col1', 'col2']]. Observe los corchetes dobles: el par exterior es el operador de indexación y el interior crea una lista de Python. El resultado es un DataFrame, no una Serie. Esto se utiliza habitualmente para extraer una matriz de características para el aprendizaje automático.

import pandas as pd

df = pd.DataFrame({'a': [1,2], 'b': [3,4], 'c': [5,6]})
subset = df[['a', 'c']]
print(type(subset))      # pandas.core.frame.DataFrame
print(subset)

.loc para seleccionar filas y columnas

df.loc[row_label, col_label] selecciona datos por etiqueta. Proporcione una etiqueta individual, una lista de etiquetas o un segmento tanto para las filas como para las columnas. df.loc[:, 'score'] selecciona todas las filas de la columna 'score'. df.loc['r1':'r3', ['a', 'b']] selecciona las filas de r1 a r3 (ambas inclusive) para las columnas a y b.

import pandas as pd

df = pd.DataFrame({'x': [10,20,30], 'y': [40,50,60]},
                  index=['r1', 'r2', 'r3'])
print(df.loc['r2', 'x'])       # 20
print(df.loc['r1':'r2', 'y'])  # r1:40  r2:50

.iloc para seleccionar por posición

df.iloc[row_pos, col_pos] selecciona por posición entera, ignorando las etiquetas. Ambos argumentos siguen las convenciones de segmentos de Python, con límites finales exclusivos. df.iloc[:, 0] selecciona la primera columna como una Serie. df.iloc[0:2, 1:3] selecciona un sub-DataFrame rectangular de 2×2 desde la esquina superior izquierda.

import pandas as pd

df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6], 'c': [7,8,9]})
print(df.iloc[1, 2])        # 8  -- row 1, col 2
print(df.iloc[0:2, 0:2])   # top-left 2x2 sub-table

Selección booleana de filas

Pase a .loc una Serie booleana (con el mismo índice que el DataFrame) para filtrar filas. Cree la Serie booleana a partir de una condición sobre una columna. Puede combinar condiciones con & y |. Este es el patrón de filtrado estándar en el análisis de datos con Pandas y resulta mucho más expresivo que las cláusulas WHERE de SQL para condiciones complejas que abarcan varias columnas.

import pandas as pd

df = pd.DataFrame({'name': ['A','B','C','D'], 'score': [80,55,92,71]})
high = df.loc[df['score'] >= 70]
print(high)
#   name  score
# 0    A     80
# 2    C     92
# 3    D     71

Condiciones de filtrado compuestas

Cada condición debe estar entre paréntesis y combinarse con & (AND) o | (OR). Usar las palabras clave and/or de Python con Series produce un error. Para negar una condición, use ~ (tilde) en lugar de not. Compruebe siempre las condiciones por separado antes de combinarlas para localizar el origen de resultados inesperados.

import pandas as pd

df = pd.DataFrame({'name': ['A','B','C','D'],
                   'score': [80, 55, 92, 71],
                   'dept': ['Eng', 'HR', 'Eng', 'HR']})
filtered = df.loc[(df['score'] >= 70) & (df['dept'] == 'Eng')]
print(filtered)

Seleccionar filas por posición entera

df.iloc[n] devuelve la fila n como una Serie. df.iloc[n:m] devuelve las filas n a m-1 como un DataFrame. df.iloc[[0, 2, 4]] selecciona filas concretas por posición mediante indexación avanzada. Estas operaciones equivalen a la selección de filas de un array de NumPy y suelen utilizarse para dividir datos de entrenamiento y prueba antes de aplicar modelos de aprendizaje automático.

import pandas as pd

df = pd.DataFrame({'a': range(5), 'b': range(5, 10)})
print(df.iloc[0])         # first row as Series
print(df.iloc[1:3])       # rows 1 and 2 as DataFrame
print(df.iloc[[0, 4]])    # first and last row

Combinar la selección de filas y columnas

Tanto .loc como .iloc aceptan dos argumentos: df.loc[row_selector, col_selector]. Esto permite realizar una selección rectangular precisa en una sola expresión. Dos puntos : por sí solos seleccionan todas las filas o todas las columnas. Este patrón es fundamental para extraer una matriz de características con columnas específicas únicamente para las filas de entrenamiento de un conjunto de datos.

import pandas as pd

df = pd.DataFrame({'x': [1,2,3], 'y': [4,5,6], 'z': [7,8,9]})
# Filter rows where x > 1, keep columns y and z
result = df.loc[df['x'] > 1, ['y', 'z']]
print(result)
#    y  z
# 1  5  8
# 2  6  9

Seleccionar una sola fila con .loc

Cuando pasa una etiqueta escalar individual a df.loc[label], el resultado es una Serie cuyo índice está formado por los nombres de las columnas. Esto resulta útil para inspeccionar un registro concreto. Para obtener un DataFrame de una sola fila, incluya la etiqueta en una lista: df.loc[[label]]. La diferencia es importante al pasar resultados a funciones que esperan un DataFrame.

import pandas as pd

df = pd.DataFrame({'name': ['A','B'], 'score': [80, 90]},
                  index=['r1', 'r2'])
print(type(df.loc['r1']))    # Series
print(type(df.loc[['r1']])) # DataFrame

at e iat para acceder rápidamente a escalares

df.at[row_label, col_name] y df.iat[row_pos, col_pos] recuperan o establecen un único valor escalar con menos sobrecarga que .loc/.iloc. Están diseñados para bucles que actualizan celdas individuales. En código de producción, prefiera siempre las operaciones vectorizadas a las actualizaciones celda a celda, pero use at/iat cuando realmente necesite iterar.

import pandas as pd

df = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]},
                  index=['a', 'b', 'c'])
print(df.at['b', 'y'])    # 5
print(df.iat[2, 0])       # 3

Advertencia sobre la indexación encadenada

La indexación encadenada, como df['col'][condition] o df[mask]['col'] = val, puede producir un SettingWithCopyWarning porque Pandas podría operar sobre una copia en lugar del original. Use siempre una única expresión .loc para cualquier modificación: df.loc[mask, 'col'] = val. Este es el patrón correcto y no genera advertencias.

import pandas as pd

df = pd.DataFrame({'score': [80, 55, 92]})
# WRONG - may not modify original:
# df[df['score'] > 60]['score'] = 100

# CORRECT:
df.loc[df['score'] > 60, 'score'] = 100
print(df)

Comprobación rápida

Compruebe su comprensión de la selección de columnas y filas explicada en esta lección.

Resumen de la lección

En esta lección ha aprendido que .loc selecciona filas y columnas por etiqueta, con límites de segmento inclusivos, que .iloc selecciona por posición entera, con límites exclusivos como los segmentos de Python y que las condiciones booleanas aplicadas mediante .loc filtran filas sin el problema de SettingWithCopyWarning de la indexación encadenada. A continuación, añadiremos columnas calculadas, cambiaremos el nombre de las existentes y eliminaremos columnas no deseadas con drop().

Gratis para empezar

Aprende Python con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Selección de columnas y filas» es gratis?

Sí — el texto completo de «Selección de columnas y filas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Pandas & NumPy Academy, actualiza a CoddyKit PRO. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Selección de columnas y filas»?

Seleccione una o varias columnas con notación de corchetes y obtenga filas por etiqueta y posición mediante .loc y .iloc. Practicas Pandas & NumPy Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Pandas & NumPy Academy?

No se requiere experiencia previa. Pandas & NumPy Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Selección de columnas y filas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Pandas & NumPy Academy?

Sí. Cada lección de Pandas & NumPy Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Creación de DataFrames
  2. Selección de columnas y filas
  3. Añadir y eliminar columnas
  4. Inspección básica de DataFrames
← Volver a Pandas & NumPy Academy