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