HOWTO · Pandas

Itération par les colonnes d'un DataFrame Pandas

Ce tutoriel montre comment itérer à travers les colonnes d'une DataFrame

Sur cette page

Pour parcourir les colonnes d’un DataFrame Pandas, itérez sur le DataFrame pour obtenir chaque étiquette de colonne, puis utilisez df[column] pour sélectionner la série correspondante. Utilisez DataFrame.items() pour obtenir ensemble l’étiquette et la série, ou enumerate() si vous avez également besoin de la position de chaque colonne.

Parcourir les colonnes avec une boucle for et df[column]

Une boucle sur un DataFrame parcourt ses étiquettes de colonne. À chaque itération, df[column] sélectionne la série associée à cette étiquette. Cet exemple affiche chaque étiquette de colonne, suivie de ses valeurs sous forme de liste 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 de boucle contient une étiquette telle que name ou score ; ce n’est pas un numéro de ligne. La série sélectionnée conserve l’index des lignes du DataFrame. Convertissez-la en liste avec .tolist() uniquement si une liste est utile pour l’étape suivante ; .values fournit plutôt une représentation de type tableau.

Parcourir les étiquettes de colonne et les séries avec DataFrame.items()

DataFrame.items() fournit chaque étiquette de colonne associée à sa série. Décomposez cette paire pour utiliser directement les deux valeurs. Cet exemple affiche chaque étiquette et les valeurs de sa série :

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]

Choisissez cette approche lorsque votre opération a besoin de l’étiquette et de la série correspondante dans la même boucle. Vous pouvez, par exemple, appliquer séparément une mise en forme ou un calcul récapitulatif à chaque colonne. Si un calcul peut être effectué sur l’ensemble du DataFrame, une opération Pandas vectorisée sera peut-être plus claire que de traiter les colonnes une par une.

Obtenir la position et l’étiquette de chaque colonne avec enumerate()

Enveloppez df.columns dans la fonction intégrée enumerate() de Python pour associer chaque étiquette à sa position, à partir de zéro, dans la séquence des colonnes. L’exemple affiche la position de chaque colonne, à partir de zéro, suivie de son étiquette :

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

Ici, position vaut 0 pour la première colonne, 1 pour la deuxième, et ainsi de suite. Cette position est distincte de l’étiquette d’index d’une ligne, qui identifie les lignes et peut prendre des valeurs qui ne sont pas des entiers consécutifs. Utilisez cette forme lorsqu’une autre opération nécessite à la fois l’ordre de la colonne et son étiquette ; utilisez la boucle simple ou DataFrame.items() lorsque la position n’est pas nécessaire.