Como selecionar linhas por índice em um dataframe do pandas


Freqüentemente, você pode querer selecionar linhas em um DataFrame do pandas com base em seu valor de índice.

Se quiser selecionar linhas com base na indexação de inteiros, você pode usar a função .iloc .

Se quiser selecionar linhas com base na indexação de rótulos, você pode usar a função .loc .

Este tutorial fornece um exemplo de como usar cada uma dessas funções na prática.

Exemplo 1: Selecione linhas com base na indexação de inteiros

O código a seguir mostra como criar um DataFrame do pandas e usar .iloc para selecionar a linha com um valor de índice inteiro de 4 :

 import pandas as pd
import numpy as np

#make this example reproducible
n.p. random . seeds (0)

#createDataFrame
df = pd. DataFrame ( np.random.rand (6,2),index=range(0,18,3),columns=[' A ' ,' B '])

#view DataFrame
df

	       A B
0 0.548814 0.715189
3 0.602763 0.544883
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442
15 0.791725 0.528895

#select the 5th row of the DataFrame
df. iloc [[4]]

	       A B
12 0.963663 0.383442

Podemos usar sintaxe semelhante para selecionar várias linhas:

 #select the 3rd, 4th, and 5th rows of the DataFrame
df. iloc [[2, 3, 4]]

	       A B
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442

Ou poderíamos selecionar todas as linhas de um intervalo:

 #select the 3rd, 4th, and 5th rows of the DataFrame
df. iloc [2:5]

	       A B
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442

Exemplo 2: Selecione linhas com base na indexação de rótulos

O código a seguir mostra como criar um DataFrame do pandas e usar .loc para selecionar a linha com um rótulo de índice de 3 :

 import pandas as pd
import numpy as np

#make this example reproducible
n.p. random . seeds (0)

#createDataFrame
df = pd. DataFrame ( np.random.rand (6,2),index=range(0,18,3),columns=[' A ' ,' B '])

#view DataFrame
df

	       A B
0 0.548814 0.715189
3 0.602763 0.544883
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442
15 0.791725 0.528895

#select the row with index label '3'
df. loc [[3]]

               A B
3 0.602763 0.544883

Podemos usar sintaxe semelhante para selecionar várias linhas com rótulos de índice diferentes:

 #select the rows with index labels '3', '6', and '9'
df. loc [[3, 6, 9]]

	       A B
3 0.602763 0.544883
6 0.423655 0.645894
9 0.437587 0.891773

A diferença entre .iloc e .loc

Os exemplos acima ilustram a diferença sutil entre .iloc e .loc :

  • .iloc seleciona linhas com base em um índice inteiro . Portanto, se você quiser selecionar a 5ª linha de um DataFrame, você usaria df.iloc[[4]] já que a primeira linha está no índice 0, a segunda linha está no índice 1 e assim por diante.
  • .loc seleciona linhas com base em um índice rotulado . Portanto, se você quiser selecionar a linha com um rótulo de índice 5, você usará diretamente df.loc[[5]].

Recursos adicionais

Como obter números de linha em um DataFrame do Pandas
Como deletar linhas com valores NaN no Pandas
Como remover a coluna de índice no Pandas

Add a Comment

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