Python-funk­tio­nen pandas DataFrame.iterrows() bruges til at gentage rækker i en pandas DataFrame. For hver række leverer den en Python-tuple, der in­de­hol­der ræk­ke­in­dek­set og et Series-objekt med rækkeens data.

Hvad er syntaksen for pandas iterrows()?

Den grund­læg­gen­de syntaks i pandas DataFrame.iterrows() er enkel, da funk­tio­nen ikke tager nogen parametre:

df.iterrows()
python

I dette ko­de­ek­sem­pel er df den DataFrame, du vil gentage.

Sådan bruges funk­tio­nen pandas iterrows()

Funk­tio­nen DataFrame.iterrows() bruges typisk, når du skal behandle data række for række. Den kom­bi­ne­res ofte med Python for-loops.

Addition af værdier i en kolonne

Lad os se på et eksempel på en DataFrame, der in­de­hol­der ko­lon­ner­ne Navn, Alder og Score:

import pandas as pd
# Creating an example DataFrame
data = {'Name': ['Anna', 'Ben', 'Clara'],
    'Age': [23, 35, 29],
    'Score': [88, 92, 85]}
df = pd.DataFrame(data)
print(df)
python

Oven­stå­en­de kode re­sul­te­rer i følgende DataFrame:

Name  Age  Score
0   Anna    23     88
1    Ben    35     92
2  Clara    29     85

Lad os nu beregne summen af scorerne. Vi kan bruge pandas DataFrame.iterrows() til at gøre dette:

# Calculating the total score
total_score = 0
for index, row in df.iterrows():
    total_score += row['Score']
print(f"The total score is: {total_score}")
python

I dette eksempel har vi brugt pandas iterrows() -funk­tio­nen til at gen­nem­lø­be hver række og lægge værdierne i kolonnen Score sammen én efter én. Dette giver følgende resultat:

The total score is: 265
Note

Når du bruger pandas iterrows(), er det vigtigt ikke at ændre de data, du itererer over, direkte. Afhængigt af datatypen kan dette føre til uventede re­sul­ta­ter og util­sig­tet adfærd.

Be­hand­ling af rækker ved hjælp af be­tin­gel­ser

Funk­tio­nen iterrows() kan også bruges til at anvende be­tin­gel­ser på in­di­vi­du­el­le rækker i din DataFrame. Lad os for eksempel sige, at du vil hente navnene på alle over 30 år i DataFrame fra det sidste eksempel:

# Retrieving names of people over 30 years old
names = []
for index, row in df.iterrows():
    if row['Age'] > 30:
        names.append(row['Name'])
print(f"People over 30 years old: {names}")
python

I dette eksempel brugte vi DataFrame.iterrows() til at gennemgå hver datarække. Inden for for-løkken tjekker den værdierne i kolonnen Alder og gemmer kun navnene på personer over 30 år i Python-listen names. Dette gøres ved hjælp af Python-funk­tio­nen append(). Her er re­sul­ta­tet:

People over 30 years old: ['Ben']
Note

Selvom det er nemt at bruge DataFrames.iterrows(), skal du være opmærksom på, at det muligvis ikke kører effektivt på store Da­ta­F­ra­mes. I mange tilfælde kan andre mu­lig­he­der som apply() eller vek­to­ri­se­re­de be­reg­nin­ger bruges til at opnå bedre ydeevne.

Gå til ho­ved­me­nu­en