Ce face DataFrame.iloc
iloc alege date după poziția lor în tabel, numărând de la 0, indiferent de etichetele din index. df.iloc[0] este primul rând, df.iloc[-1] ultimul, iar df.iloc[:, 0] prima coloană.
Intervalele se comportă ca la listele Python: df.iloc[0:2] dă rândurile de pe pozițiile 0 și 1, fără poziția 2. Poți da și liste de poziții: df.iloc[[0, 2], [1]].
Diferența față de loc se vede după o sortare: rândurile își păstrează etichetele, dar își schimbă pozițiile. iloc[0] dă rândul aflat acum primul, loc[0] dă rândul cu eticheta 0.
Parametri
| Parametru | Descriere |
|---|---|
pozitii_randuri |
Un număr întreg (poate fi negativ), o listă de numere, un interval start:stop:pas sau o mască booleană ca listă/array. |
pozitii_coloane |
Opțional. La fel, pentru coloane. Lipsește = toate coloanele. |
Ce returnează
O valoare, un Series sau un DataFrame, după cât de mult alegi.
Exemple
Exemplul 1: Primul rând, ultimul rând, primele coloane
import pandas as pd
df = pd.DataFrame({
"nume": ["Ana", "Mihai", "Ioana", "Andrei"],
"oras": ["Iași", "Cluj", "Iași", "Brașov"],
"nota": [9.5, 7.0, 8.5, 6.0],
})
print(df.iloc[0])
print()
print(df.iloc[-1, 2])
print()
print(df.iloc[0:2])
print()
print(df.iloc[[1, 3], 0:2])
Rezultat
nume Ana
oras Iași
nota 9.5
Name: 0, dtype: object
6.0
nume oras nota
0 Ana Iași 9.5
1 Mihai Cluj 7.0
nume oras
1 Mihai Cluj
3 Andrei Brașov
Exemplul 2: iloc față de loc după sortare
După sortarea descrescătoare, pe poziția 0 se află Ana (eticheta 1), iar rândul cu eticheta 0 (Mihai) a ajuns ultimul. iloc urmează ordinea curentă, loc urmează eticheta.
import pandas as pd
df = pd.DataFrame({
"nume": ["Mihai", "Ana", "Ioana"],
"nota": [7.0, 9.5, 8.5],
})
sortat = df.sort_values("nota", ascending=False)
print(sortat)
print()
print("iloc[0]:", sortat.iloc[0]["nume"])
print("loc[0]: ", sortat.loc[0]["nume"])
Rezultat
nume nota
1 Ana 9.5
2 Ioana 8.5
0 Mihai 7.0
iloc[0]: Ana
loc[0]: Mihai
Greșeli frecvente
- Aștepți ca
df.iloc[0:3]să includă poziția 3. Capătul din dreapta este exclus, ca lalista[0:3]. - Dai nume de coloane:
df.iloc[0, "nota"]aruncă eroare.ilocprimește doar poziții; pentru nume foloseștelocsaudf.columns.get_loc("nota"). - O poziție prea mare (
df.iloc[10]pe un tabel cu 4 rânduri) aruncăIndexError. Un interval prea mare, în schimb, este tăiat fără eroare.
Comenzi înrudite
DataFrame.loc: Selectează rânduri și coloane după etichete (numele din index și numele coloanelor) și permite modificarea valorilor.DataFrame.at și DataFrame.iat: Citesc sau modifică o singură valoare din tabel: at după etichete, iat după poziții.head() / tail(): Afișează primele (head) sau ultimele (tail) n rânduri dintr-un DataFrame sau Series. Implicit 5.DataFrame.sort_values() și sort_index(): Ordonează rândurile după valorile uneia sau mai multor coloane (sort_values) sau după etichetele din index (sort_index).