Sådan gennemløber du DataFrames med pandas iterrows()
Python-funktionen pandas DataFrame.iterrows() bruges til at gentage rækker i en pandas DataFrame. For hver række leverer den en Python-tuple, der indeholder rækkeindekset og et Series-objekt med rækkeens data.
Hvad er syntaksen for pandas iterrows()?
Den grundlæggende syntaks i pandas DataFrame.iterrows() er enkel, da funktionen ikke tager nogen parametre:
df.iterrows()pythonI dette kodeeksempel er df den DataFrame, du vil gentage.
Sådan bruges funktionen pandas iterrows()
Funktionen DataFrame.iterrows() bruges typisk, når du skal behandle data række for række. Den kombineres ofte med Python for-loops.
Addition af værdier i en kolonne
Lad os se på et eksempel på en DataFrame, der indeholder kolonnerne 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)pythonOvenstående kode resulterer i følgende DataFrame:
Name Age Score
0 Anna 23 88
1 Ben 35 92
2 Clara 29 85Lad 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}")pythonI dette eksempel har vi brugt pandas iterrows() -funktionen til at gennemlø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: 265Nå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 resultater og utilsigtet adfærd.
Behandling af rækker ved hjælp af betingelser
Funktionen iterrows() kan også bruges til at anvende betingelser på individuelle 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}")pythonI 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-funktionen append(). Her er resultatet:
People over 30 years old: ['Ben']Selvom det er nemt at bruge DataFrames.iterrows(), skal du være opmærksom på, at det muligvis ikke kører effektivt på store DataFrames. I mange tilfælde kan andre muligheder som apply() eller vektoriserede beregninger bruges til at opnå bedre ydeevne.