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.
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.SeriesSeleccionar 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-tableSelecció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 71Condiciones 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 rowCombinar 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 9Seleccionar 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']])) # DataFrameat 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]) # 3Advertencia 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().
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
- Creación de DataFrames
- Selección de columnas y filas
- Añadir y eliminar columnas
- Inspección básica de DataFrames