Pandas: como obter as primeiras n linhas por grupo


Você pode usar a seguinte sintaxe básica para obter as primeiras N linhas por grupo em um DataFrame do pandas:

 df. groupby (' group_column '). head ( 2 ). reset_index (drop= True )

Esta sintaxe específica retornará as 2 primeiras linhas por grupo.

Simplesmente altere o valor na função head() para retornar um número diferente de linhas superiores.

Os exemplos a seguir mostram como usar essa sintaxe com o seguinte DataFrame do pandas:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'G', 'F', 'F', 'G', 'G', 'F', 'F', 'F'],
                   ' points ': [5, 7, 7, 9, 12, 9, 9, 4, 7, 7]})

#view DataFrame
print (df)

  team position points
0 AG 5
1 AG 7
2 AG 7
3 AF 9
4AF 12
5 BG 9
6 BG 9
7 BF 4
8 BF 7
9 BF 7

Exemplo 1: Obtenha as primeiras N linhas agrupadas por uma coluna

O código a seguir mostra como retornar as 2 primeiras linhas, agrupadas pela variável team :

 #get top 2 rows grouped by team
df. groupby (' team '). head ( 2 ). reset_index (drop= True )

        team position points
0 A G 5
1 A G 7
2 B G 9
3 B G 9

A saída mostra as 2 primeiras linhas, agrupadas por variável de equipe .

Exemplo 2: obtenha as primeiras N linhas agrupadas por várias colunas

O código a seguir mostra como retornar as 2 primeiras linhas, agrupadas por variáveis de equipe e posição :

 #get top 2 rows grouped by team and position
df. groupby ([' team ', ' position ']). head ( 2 ). reset_index (drop= True )

team position points
0 A G 5
1 A G 7
2 A F 9
3 A F 12
4 B G 9
5 B G 9
6 B F 4
7 B F 7

A saída mostra as 2 primeiras linhas, agrupadas por variáveis de equipe e posição .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em pandas:

Pandas: como encontrar valores únicos em uma coluna
Pandas: como encontrar valores únicos em múltiplas colunas
Pandas: como contar ocorrências de valores específicos em uma coluna

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *