pandas
.Ix, .iloc, .loc, .at en .iat gebruiken om toegang te krijgen tot een DataFrame
Zoeken…
.Iloc gebruiken
.iloc gebruikt gehele getallen om gegevens naar een DataFrame te lezen en te schrijven.
Laten we eerst een DataFrame maken:
df = pd.DataFrame({'one': [1, 2, 3, 4, 5],
'two': [6, 7, 8, 9, 10],
}, index=['a', 'b', 'c', 'd', 'e'])
Dit DataFrame ziet eruit als:
one two
a 1 6
b 2 7
c 3 8
d 4 9
e 5 10
Nu kunnen we .iloc gebruiken om waarden te lezen en te schrijven. Laten we de eerste rij, eerste kolom lezen:
print df.iloc[0, 0]
Dit wordt afgedrukt:
1
We kunnen ook waarden instellen. Laten we de tweede kolom, tweede rij op iets nieuws zetten:
df.iloc[1, 1] = '21'
En kijk dan eens wat er is gebeurd:
print df
one two
a 1 6
b 2 21
c 3 8
d 4 9
e 5 10
.Loc gebruiken
.loc gebruikt labels om gegevens te lezen en te schrijven.
Laten we een DataFrame instellen:
df = pd.DataFrame({'one': [1, 2, 3, 4, 5],
'two': [6, 7, 8, 9, 10],
}, index=['a', 'b', 'c', 'd', 'e'])
Vervolgens kunnen we het DataFrame afdrukken om de vorm te bekijken:
print df
Dit wordt uitgevoerd
one two
a 1 6
b 2 7
c 3 8
d 4 9
e 5 10
We gebruiken de kolom- en rijlabels om toegang te krijgen tot gegevens met .loc. Laten we rij 'c', kolom 'twee' instellen op de waarde 33:
df.loc['c', 'two'] = 33
Dit is hoe het DataFrame er nu uitziet:
one two
a 1 6
b 2 7
c 3 33
d 4 9
e 5 10
Merk op dat het gebruik van df['two'].loc['c'] = 33
mogelijk geen waarschuwing meldt, en mogelijk zelfs werkt, maar het gebruik van df.loc['c', 'two']
werkt gegarandeerd correct , terwijl de eerste niet is.
We kunnen bijvoorbeeld stukjes data lezen
print df.loc['a':'c']
drukt rijen a tot c af. Dit is inclusief.
one two
a 1 6
b 2 7
c 3 8
En ten slotte kunnen we beide samen doen:
print df.loc['b':'d', 'two']
Zal rijen b t / m c van kolom 'twee' uitvoeren. Merk op dat het kolomlabel niet wordt afgedrukt.
b 7
c 8
d 9
Als .loc wordt geleverd met een geheel getalargument dat geen label is, keert het terug naar gehele indexering van assen (het gedrag van .iloc). Dit maakt gemengde labels en gehele getallen mogelijk:
df.loc['b', 1]
retourneert de waarde in de 2e kolom (index beginnend bij 0) in rij 'b':
7