HOWTO · Pandas
Obtenir la première ligne d’un DataFrame Pandas
Apprenez à sélectionner la première ligne d’un DataFrame Pandas avec `iloc`, `head()`, un filtrage, `query()`, `take()` ou une tranche, et à choisir entre un résultat Series et un résultat DataFrame.
Sur cette page
Utilisez df.iloc[0] pour récupérer la première ligne sous forme de Series, ou df.head(1) pour la conserver dans un DataFrame d’une seule ligne. Pour obtenir la première ligne qui satisfait certains critères, commencez par filtrer, puis sélectionnez le premier résultat.
Les exemples utilisent ce petit DataFrame afin de faciliter le suivi des valeurs sélectionnées et des étiquettes de ligne d’origine. Chaque bloc de code est autonome et peut être exécuté dans un environnement Python où pandas est installé ; la sortie observée lors de l’exécution fournie apparaît après chaque exemple.
Obtenir la première ligne d’un DataFrame Pandas avec la propriété pandas.DataFrame.iloc
pandas.DataFrame.iloc sélectionne les lignes et les colonnes selon leur position entière. La position 0 désigne la première ligne, quelle que soit son étiquette d’index. La sélection d’une ligne avec df.iloc[0] renvoie une Series dont l’index contient les noms des colonnes du DataFrame. Utilisez df.iloc[0, 1] pour sélectionner une seule valeur située à la position de ligne 0 et à la position de colonne 1.
import pandas as pd
df = pd.DataFrame(
{
"C_1": ["A", "B", "C", "D"],
"C_2": [40, 34, 38, 45],
"C_3": [430, 980, 200, 350],
}
)
first_row = df.iloc[0]
print(first_row)
C_1 A
C_2 40
C_3 430
Name: 0, dtype: object
Choisissez cette forme lorsqu’une Series est pratique pour effectuer des calculs ultérieurs ou accéder aux valeurs par nom de colonne. Pour conserver la structure bidimensionnelle d’un DataFrame, utilisez df.iloc[[0]] ou l’une des méthodes ci-dessous.
Obtenir la première ligne d’un DataFrame Pandas avec la méthode pandas.DataFrame.head()
pandas.DataFrame.head(n) renvoie les n premières lignes sous forme de DataFrame. Passez 1 pour ne conserver que la première ligne, tout en préservant la structure des colonnes et son étiquette d’index. C’est souvent le choix le plus clair lorsque le code qui suit attend un DataFrame.
import pandas as pd
df = pd.DataFrame(
{
"C_1": ["A", "B", "C", "D"],
"C_2": [40, 34, 38, 45],
"C_3": [430, 980, 200, 350],
}
)
first_row = df.head(1)
print(first_row)
C_1 C_2 C_3
0 A 40 430
Le choix essentiel porte sur la forme du résultat : df.iloc[0] est unidimensionnel, tandis que df.head(1) reste un DataFrame.
Obtenir la première ligne d’un DataFrame Pandas qui satisfait une condition donnée
Filtrez les lignes avant de sélectionner la première correspondance. Dans cet exemple, la condition est C_2 < 40 et C_3 > 450 ; la première ligne correspondante porte l’étiquette 1. Le masque booléen met chaque comparaison entre parenthèses, car & combine les deux conditions.
import pandas as pd
df = pd.DataFrame(
{
"C_1": ["A", "B", "C", "D"],
"C_2": [40, 34, 38, 45],
"C_3": [430, 980, 500, 350],
}
)
matches = df[(df["C_2"] < 40) & (df["C_3"] > 450)]
first_match = matches.head(1)
print(first_match)
C_1 C_2 C_3
1 B 34 980
head(1) renvoie un DataFrame vide si aucune ligne ne correspond. Si vous avez besoin d’une seule Series lorsqu’une correspondance existe, sélectionnez-la avec matches.iloc[0] ; vérifiez d’abord matches.empty si les critères peuvent ne trouver aucune ligne.
La méthode query() exprime le même filtre sous forme de chaîne et peut faciliter la lecture des expressions portant sur les colonnes. Gardez le prédicat identique à celui de l’exemple avec le filtre booléen :
import pandas as pd
df = pd.DataFrame(
{
"C_1": ["A", "B", "C", "D"],
"C_2": [40, 34, 38, 45],
"C_3": [430, 980, 500, 350],
}
)
matches = df.query("(C_2 < 40) & (C_3 > 450)")
first_match = matches.head(1)
print(first_match)
C_1 C_2 C_3
1 B 34 980
Pour utiliser des valeurs provenant de variables Python, écrivez @variable dans une expression query(). Par exemple, la variable limit = 40 peut être référencée ainsi : df.query("C_2 < @limit").
Obtenir la première ligne d’un DataFrame Pandas avec la méthode pandas.DataFrame.take()
pandas.DataFrame.take() sélectionne les lignes par position lorsque l’axe des lignes par défaut est utilisé. Passez [0] pour sélectionner la première ligne sous forme de DataFrame d’une seule ligne, en conservant son étiquette d’index d’origine.
import pandas as pd
df = pd.DataFrame(
{
"C_1": ["A", "B", "C", "D"],
"C_2": [40, 34, 38, 45],
"C_3": [430, 980, 200, 350],
}
)
first_row = df.take([0])
print(first_row)
C_1 C_2 C_3
0 A 40 430
Utilisez take() lorsqu’une liste de positions de lignes est déjà disponible. Pour sélectionner simplement la première ligne, head(1) ou iloc[[0]] peut exprimer l’intention plus directement.
Obtenir la première ligne d’un DataFrame Pandas avec le slicing
La tranche df[:1] sélectionne les lignes depuis le début jusqu’à la position 1, sans inclure celle-ci. Elle renvoie un DataFrame et conserve l’étiquette d’index de la ligne sélectionnée.
import pandas as pd
df = pd.DataFrame(
{
"C_1": ["A", "B", "C", "D"],
"C_2": [40, 34, 38, 45],
"C_3": [430, 980, 200, 350],
}
)
first_row = df[:1]
print(first_row)
C_1 C_2 C_3
0 A 40 430
Conclusion
Utilisez df.iloc[0] si vous voulez une Series, et df.head(1), df.iloc[[0]], df.take([0]) ou df[:1] si vous voulez un DataFrame d’une seule ligne. Pour obtenir la première ligne qui satisfait certains critères, appliquez un filtre booléen ou utilisez query(), puis sélectionnez la première ligne filtrée. Si aucune correspondance n’est possible, vérifiez matches.empty avant l’indexation.