Hoe rijen op index te selecteren in een pandas dataframe
Vaak wilt u misschien rijen in een Panda’s DataFrame selecteren op basis van hun indexwaarde.
Als u rijen wilt selecteren op basis van indexering van gehele getallen, kunt u de functie .iloc gebruiken.
Als u rijen wilt selecteren op basis van labelindexering, kunt u de .loc- functie gebruiken.
Deze tutorial geeft een voorbeeld van hoe u elk van deze functies in de praktijk kunt gebruiken.
Voorbeeld 1: Selecteer rijen op basis van gehele indexering
De volgende code laat zien hoe u een Panda’s DataFrame maakt en .iloc gebruikt om de rij met een gehele indexwaarde van 4 te selecteren:
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
We kunnen een vergelijkbare syntaxis gebruiken om meerdere rijen te selecteren:
#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
Of we kunnen alle rijen in een bereik selecteren:
#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
Voorbeeld 2: Selecteer rijen op basis van labelindexering
De volgende code laat zien hoe u een Panda DataFrame maakt en .loc gebruikt om de rij met een indexlabel van 3 te selecteren:
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
We kunnen een vergelijkbare syntaxis gebruiken om meerdere rijen met verschillende indexlabels te selecteren:
#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
Het verschil tussen .iloc en .loc
De bovenstaande voorbeelden illustreren het subtiele verschil tussen .iloc en .loc :
- .iloc selecteert rijen op basis van een gehele index . Als u dus de vijfde rij van een DataFrame wilt selecteren, gebruikt u df.iloc[[4]] omdat de eerste rij op index 0 staat, de tweede rij op index 1, enzovoort.
- .loc selecteert rijen op basis van een gelabelde index . Dus als u de rij met een indexlabel van 5 wilt selecteren, gebruikt u direct df.loc[[5]].
Aanvullende bronnen
Hoe rijnummers in een Pandas DataFrame te krijgen
Hoe rijen met NaN-waarden in Panda’s te verwijderen
Hoe de indexkolom in Pandas te verwijderen