Come selezionare le righe per indice in un pandas dataframe
Spesso potresti voler selezionare le righe in un DataFrame panda in base al loro valore di indice.
Se desideri selezionare le righe in base all’indicizzazione dei numeri interi, puoi utilizzare la funzione .iloc .
Se desideri selezionare le righe in base all’indicizzazione delle etichette, puoi utilizzare la funzione .loc .
Questo tutorial fornisce un esempio di come utilizzare ciascuna di queste funzioni nella pratica.
Esempio 1: selezionare le righe in base all’indicizzazione dei numeri interi
Il codice seguente mostra come creare un DataFrame panda e utilizzare .iloc per selezionare la riga con un valore di indice intero pari a 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
Possiamo usare una sintassi simile per selezionare più righe:
#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
Oppure potremmo selezionare tutte le righe in un intervallo:
#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
Esempio 2: selezionare le righe in base all’indicizzazione delle etichette
Il codice seguente mostra come creare un DataFrame panda e utilizzare .loc per selezionare la riga con un’etichetta di indice pari a 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
Possiamo utilizzare una sintassi simile per selezionare più righe con etichette di indice diverse:
#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
La differenza tra .iloc e .loc
Gli esempi sopra illustrano la sottile differenza tra .iloc e .loc :
- .iloc seleziona le righe in base a un indice intero . Pertanto, se desideri selezionare la quinta riga di un DataFrame, utilizzeresti df.iloc[[4]] poiché la prima riga è all’indice 0, la seconda riga è all’indice 1 e così via.
- .loc seleziona le righe in base a un indice etichettato . Quindi, se vuoi selezionare la riga con un’etichetta indice pari a 5, utilizzerai direttamente df.loc[[5]].
Risorse addizionali
Come ottenere i numeri di riga in un Pandas DataFrame
Come eliminare righe con valori NaN in Panda
Come rimuovere la colonna dell’indice in Pandas