Pandas : comment obtenir la première rangée de chaque groupe



Vous pouvez utiliser la syntaxe de base suivante pour obtenir la première ligne de chaque groupe dans un DataFrame pandas :

df.groupby('column_name').nth(0)

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : Obtenez la première ligne de chaque groupe dans Pandas

Supposons que nous ayons le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
                   'points': [18, 22, 19, 14, 14, 11, 20, 29],
                   'assists': [5, 19, 14, 8, 9, 12, 13, 8]})

#view DataFrame
df

	team	points	assists
0	A	18	5
1	A	22	19
2	B	19	14
3	B	14	8
4	B	14	9
5	C	11	12
6	C	20	13
7	C	29	8

Nous pouvons utiliser le code suivant pour obtenir la première ligne pour chaque équipe :

#get first row for each team
df.groupby('team').nth(0)

	points	assists
team		
A	18	5
B	19	14
C	11	12

Nous pouvons également spécifier as_index=False pour conserver les valeurs d’index d’origine :

#get first row for each team, keep original index values
df.groupby('team', as_index=False).nth(0)

        team	points	assists
0	A	18	5
2	B	19	14
5	C	11	12

Notez également que vous pouvez transmettre une liste de valeurs à la fonction nth() si vous souhaitez obtenir les n premières lignes de chaque groupe.

Par exemple, le code suivant montre comment obtenir les deux premières lignes de chaque groupe :

#get first two rows for each team, keep original index values
df.groupby('team', as_index=False).nth((0, 1))

        team	points	assists
0	A	18	5
1	A	22	19
2	B	19	14
3	B	14	8
5	C	11	12
6	C	20	13

Remarque : Vous pouvez trouver la documentation complète de la fonction nth() ici .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :

Comment obtenir la première rangée de Pandas DataFrame
Comment supprimer la première ligne dans Pandas DataFrame
Comment insérer une ligne dans un DataFrame Pandas

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *