Pandas es una poderosa biblioteca de Python para la manipulación y el análisis de datos. Una tarea común implica seleccionar columnas específicas de un DataFrame. Este artículo explora métodos eficientes y claros para seleccionar múltiples columnas, destacando las mejores prácticas.
Tabla de contenido:
- Usando la sintaxis Getitem
- Usando
iloc()
- Usando
loc()
- Indexación booleana para la selección de columnas
- Consideraciones de rendimiento
- Conclusión
- Preguntas frecuentes
Usando la sintaxis Getitem
El enfoque más simple utiliza la sintaxis getitem ([]
). Proporcione una lista de nombres de columna para seleccionar esas columnas.
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)
# Seleccionar 'col1', 'col3', y 'col4'
selected_columns = ['col1', 'col3', 'col4']
selected_df = df[selected_columns]
print(selected_df)
Esto es conciso y legible, pero asegúrese de que todas las columnas enumeradas existan en el DataFrame; de lo contrario, se producirá un KeyError
.
Usando iloc()
iloc()
utiliza indexación basada en enteros. Seleccione las columnas proporcionando una lista de sus posiciones de enteros (recordando que Python utiliza la indexación basada en cero).
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)
# Seleccionar columnas en los índices 0, 2 y 3
selected_df = df.iloc[:, [0, 2, 3]] # : selecciona todas las filas, [0, 2, 3] selecciona las columnas 0, 2 y 3
print(selected_df)
El :
selecciona todas las filas. iloc()
es útil cuando se desconocen los nombres de las columnas, pero los índices están disponibles.
Usando loc()
loc()
utiliza etiquetas (nombres de columna). Si bien es similar a getitem para múltiples columnas, loc
proporciona mayor flexibilidad para selecciones combinadas de filas y columnas.
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12]}
df = pd.DataFrame(data)
# Seleccionar 'col1', 'col3', y 'col4'
selected_df = df.loc[:, ['col1', 'col3', 'col4']] # : selecciona todas las filas, ['col1', 'col3', 'col4'] selecciona las columnas especificadas
print(selected_df)
loc
indica explícitamente la selección basada en etiquetas, lo cual es beneficioso cuando se combina con la selección de filas usando etiquetas o indexación booleana.
Indexación booleana para la selección de columnas
Para escenarios más complejos, la indexación booleana con loc
permite seleccionar columnas basadas en condiciones aplicadas a sus nombres.
import pandas as pd
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9], 'col4': [10, 11, 12], 'other_col': [13,14,15]}
df = pd.DataFrame(data)
# Seleccionar columnas que comienzan con 'col'
selected_df = df.loc[:, [col.startswith('col') for col in df.columns]]
print(selected_df)
Consideraciones de rendimiento
En general, getitem es el más rápido, seguido de loc
y luego iloc
. Sin embargo, las diferencias suelen ser insignificantes a menos que se trate de DataFrames masivos. Priorice la legibilidad y el mantenimiento sobre las pequeñas ganancias de rendimiento.
Conclusión
Seleccionar múltiples columnas es fundamental en Pandas. Getitem es el más simple para nombres de columnas conocidos. iloc()
se adapta a la indexación basada en enteros, mientras que loc()
proporciona flexibilidad y se prefiere para la selección basada en etiquetas. El mejor método depende de sus necesidades específicas y la estructura de sus datos.
Preguntas frecuentes
- P: ¿Qué sucede si selecciono una columna que no existe?
R: Getitem yloc
generan unKeyError
.iloc
genera unIndexError
si el índice está fuera de los límites. - P: ¿Puedo seleccionar columnas basadas en una condición?
R: Sí, use la indexación booleana conloc
(como se muestra arriba).