HOWTO · Pandas
Iterar a través de las columnas de un Pandas DataFrame
Este tutorial demuestra cómo iterar a través de las columnas de un DataFrame
En esta página
Para recorrer las columnas de un DataFrame de Pandas, itera sobre el DataFrame para obtener la etiqueta de cada columna y luego usa df[column] para seleccionar esa columna como una serie. Usa DataFrame.items() si necesitas obtener juntos la etiqueta y la serie, o enumerate() si también necesitas la posición de cada columna.
Recorrer columnas con un bucle for y df[column]
Al recorrer un DataFrame con un bucle, se obtienen sus etiquetas de columna. En cada iteración, df[column] selecciona la serie asociada a esa etiqueta. Este ejemplo imprime cada etiqueta de columna seguida de sus valores en forma de lista de Python:
import pandas as pd
df = pd.DataFrame(
{"name": ["Ada", "Lin"], "score": [9, 8]}
)
for column in df:
print(column, df[column].tolist())
name ['Ada', 'Lin']
score [9, 8]
La variable del bucle es una etiqueta, como name o score; no es un número de fila. La serie seleccionada conserva el índice de filas del DataFrame. Convierte los valores en una lista con .tolist() solo si eso resulta útil para el paso siguiente; .values, en cambio, expone una representación similar a un arreglo.
Recorrer las etiquetas de columna y las series con DataFrame.items()
DataFrame.items() produce cada etiqueta de columna junto con su serie. Desempaqueta ese par para trabajar directamente con ambos valores. Este ejemplo imprime cada etiqueta y los valores de su serie:
import pandas as pd
df = pd.DataFrame(
{"name": ["Ada", "Lin"], "score": [9, 8]}
)
for column_label, series in df.items():
print(column_label, series.tolist())
name ['Ada', 'Lin']
score [9, 8]
Elige este patrón cuando la operación necesite la etiqueta y la serie correspondiente en el mismo bucle. Por ejemplo, puedes aplicar un paso de formato o resumen distinto a cada columna. Si puedes expresar un cálculo para todo el DataFrame a la vez, quizá sea más claro usar una operación vectorizada de Pandas que procesar las columnas una por una.
Obtener la posición y la etiqueta de cada columna con enumerate()
Envuelve df.columns con la función integrada enumerate() de Python para asociar cada etiqueta con su posición, basada en cero, en la secuencia de columnas. El ejemplo imprime la posición basada en cero de cada columna seguida de su etiqueta:
import pandas as pd
df = pd.DataFrame(
{"name": ["Ada", "Lin"], "score": [9, 8]}
)
for position, column_label in enumerate(df.columns):
print(position, column_label)
0 name
1 score
Aquí, position vale 0 para la primera columna, 1 para la segunda, y así sucesivamente. Esta posición no es lo mismo que una etiqueta del índice de filas, que identifica las filas y puede contener valores que no sean enteros consecutivos. Usa este patrón cuando otra operación necesite tanto el orden de una columna como su etiqueta; si no necesitas la posición, usa el bucle básico o DataFrame.items().