HOWTO · Pandas
Ottieni la prima riga di pandas dataframe
Impara a selezionare la prima riga di un DataFrame Pandas con iloc, head(), il filtraggio, query(), take() e lo slicing, e a scegliere tra un risultato Series e un risultato DataFrame.
In questa pagina
Usa df.iloc[0] per ottenere la prima riga come Series oppure df.head(1) per mantenerla come DataFrame di una sola riga. Per trovare la prima riga che soddisfa determinati criteri, filtra prima i dati e poi seleziona il primo risultato.
Gli esempi usano questo piccolo DataFrame per rendere facili da seguire i valori selezionati e le etichette originali delle righe. Ogni blocco di codice è autonomo e può essere eseguito in un ambiente Python con pandas installato; dopo ogni esempio è mostrato l’output osservato nell’esecuzione fornita.
Ottenere la prima riga di un DataFrame Pandas con la proprietà pandas.DataFrame.iloc
pandas.DataFrame.iloc seleziona righe e colonne in base alla posizione intera. La posizione 0 indica la prima riga, indipendentemente dall’etichetta del suo indice. Selezionando una riga con df.iloc[0] si ottiene una Series il cui indice contiene i nomi delle colonne del DataFrame. Usa df.iloc[0, 1] per selezionare un singolo valore alla posizione di riga 0 e alla posizione di colonna 1.
import pandas as pd
df = pd.DataFrame(
{
"C_1": ["A", "B", "C", "D"],
"C_2": [40, 34, 38, 45],
"C_3": [430, 980, 200, 350],
}
)
first_row = df.iloc[0]
print(first_row)
C_1 A
C_2 40
C_3 430
Name: 0, dtype: object
Scegli questa forma quando una Series è comoda per i calcoli successivi o per accedere ai valori tramite il nome della colonna. Per mantenere la forma bidimensionale di un DataFrame, usa df.iloc[[0]] oppure uno dei metodi descritti di seguito.
Ottenere la prima riga di un DataFrame Pandas con il metodo pandas.DataFrame.head()
pandas.DataFrame.head(n) restituisce le prime n righe come DataFrame. Passa 1 per ottenere solo la prima riga, mantenendo la struttura delle colonne e l’etichetta del suo indice. È spesso la scelta più chiara quando il codice successivo si aspetta un DataFrame.
import pandas as pd
df = pd.DataFrame(
{
"C_1": ["A", "B", "C", "D"],
"C_2": [40, 34, 38, 45],
"C_3": [430, 980, 200, 350],
}
)
first_row = df.head(1)
print(first_row)
C_1 C_2 C_3
0 A 40 430
La scelta principale riguarda la forma del risultato: df.iloc[0] è unidimensionale, mentre df.head(1) restituisce ancora un DataFrame.
Ottenere la prima riga di un DataFrame Pandas che soddisfa una condizione specifica
Filtra le righe prima di selezionare la prima corrispondenza. In questo esempio, la condizione è C_2 < 40 e C_3 > 450; la prima riga corrispondente ha l’etichetta 1. La maschera booleana racchiude tra parentesi ciascun confronto perché & combina le due condizioni.
import pandas as pd
df = pd.DataFrame(
{
"C_1": ["A", "B", "C", "D"],
"C_2": [40, 34, 38, 45],
"C_3": [430, 980, 500, 350],
}
)
matches = df[(df["C_2"] < 40) & (df["C_3"] > 450)]
first_match = matches.head(1)
print(first_match)
C_1 C_2 C_3
1 B 34 980
Se nessuna riga corrisponde, head(1) restituisce un DataFrame vuoto. Se, quando esiste una corrispondenza, ti serve una singola Series, selezionala con matches.iloc[0]; controlla prima matches.empty quando è possibile che non ci siano corrispondenze.
Il metodo query() esprime lo stesso filtro come stringa e può risultare comodo per scrivere espressioni leggibili sulle colonne. Mantieni il predicato coerente con l’esempio di filtro booleano:
import pandas as pd
df = pd.DataFrame(
{
"C_1": ["A", "B", "C", "D"],
"C_2": [40, 34, 38, 45],
"C_3": [430, 980, 500, 350],
}
)
matches = df.query("(C_2 < 40) & (C_3 > 450)")
first_match = matches.head(1)
print(first_match)
C_1 C_2 C_3
1 B 34 980
Per usare valori provenienti da variabili Python, inserisci @variable in un’espressione query(). Per esempio, puoi fare riferimento a limit = 40 con df.query("C_2 < @limit").
Ottenere la prima riga di un DataFrame Pandas con il metodo pandas.DataFrame.take()
Con l’asse predefinito delle righe, pandas.DataFrame.take() seleziona righe in base alla posizione. Passa [0] per selezionare la prima riga come DataFrame di una sola riga, mantenendo la sua etichetta originale dell’indice.
import pandas as pd
df = pd.DataFrame(
{
"C_1": ["A", "B", "C", "D"],
"C_2": [40, 34, 38, 45],
"C_3": [430, 980, 200, 350],
}
)
first_row = df.take([0])
print(first_row)
C_1 C_2 C_3
0 A 40 430
Usa take() quando hai già un elenco di posizioni di riga. Per selezionare semplicemente la prima riga, head(1) o iloc[[0]] possono comunicare l’intento in modo più diretto.
Ottenere la prima riga di un DataFrame Pandas usando lo slicing
Lo slice df[:1] seleziona le righe dall’inizio fino alla posizione 1, esclusa. Restituisce un DataFrame e mantiene l’etichetta dell’indice della riga selezionata.
import pandas as pd
df = pd.DataFrame(
{
"C_1": ["A", "B", "C", "D"],
"C_2": [40, 34, 38, 45],
"C_3": [430, 980, 200, 350],
}
)
first_row = df[:1]
print(first_row)
C_1 C_2 C_3
0 A 40 430
Conclusione
Usa df.iloc[0] quando vuoi una Series e df.head(1), df.iloc[[0]], df.take([0]) o df[:1] quando vuoi un DataFrame di una sola riga. Per ottenere la prima riga che soddisfa determinati criteri, applica un filtro booleano o usa query() e poi seleziona la prima riga filtrata. Se è possibile che non ci siano corrispondenze, controlla matches.empty prima di indicizzare.