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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *