pandas
Använda .ix, .iloc, .loc, .at och .iat för att komma åt en DataFrame
Sök…
Använda .iloc
.iloc använder heltal för att läsa och skriva data till en DataFrame.
Låt oss först skapa en DataFrame:
df = pd.DataFrame({'one': [1, 2, 3, 4, 5],
'two': [6, 7, 8, 9, 10],
}, index=['a', 'b', 'c', 'd', 'e'])
Denna DataFrame ser ut som:
one two
a 1 6
b 2 7
c 3 8
d 4 9
e 5 10
Nu kan vi använda .iloc för att läsa och skriva värden. Låt oss läsa den första raden, första kolumnen:
print df.iloc[0, 0]
Detta kommer att skriva ut:
1
Vi kan också ställa in värden. Låter ställa in den andra kolumnen, den andra raden till något nytt:
df.iloc[1, 1] = '21'
Och titta sedan för att se vad som hände:
print df
one two
a 1 6
b 2 21
c 3 8
d 4 9
e 5 10
Använda .loc
.loc använder etiketter för att läsa och skriva data.
Låt oss ställa in en DataFrame:
df = pd.DataFrame({'one': [1, 2, 3, 4, 5],
'two': [6, 7, 8, 9, 10],
}, index=['a', 'b', 'c', 'd', 'e'])
Sedan kan vi skriva ut DataFrame för att titta på formen:
print df
Detta kommer att matas ut
one two
a 1 6
b 2 7
c 3 8
d 4 9
e 5 10
Vi använder kolumn- och radetiketter för att komma åt data med .loc. Låt oss ställa rad 'c', kolumn 'två' till värdet 33:
df.loc['c', 'two'] = 33
Så här ser DataFrame ut:
one two
a 1 6
b 2 7
c 3 33
d 4 9
e 5 10
Observera att användning av df['two'].loc['c'] = 33
kanske inte rapporterar en varning, och kan till och med fungera, men att använda df.loc['c', 'two']
garanteras att fungera korrekt , medan den förstnämnda inte är det.
Vi kan till exempel läsa data
print df.loc['a':'c']
kommer att skriva ut rader a till c. Detta är inkluderande.
one two
a 1 6
b 2 7
c 3 8
Och slutligen kan vi göra båda tillsammans:
print df.loc['b':'d', 'two']
Kommer att mata ut raderna b till c i kolumnen "två". Lägg märke till att kolumnetiketten inte skrivs ut.
b 7
c 8
d 9
Om .loc levereras med ett heltalargument som inte är en etikett återgår det till heltalindexering av axlar (beteende hos .iloc). Detta möjliggör indexering av blandade etiketter och heltal:
df.loc['b', 1]
kommer att returnera värdet i 2: a kolumnen (index börjar vid 0) i rad 'b':
7