Pandas iterrows(): So gehst du DataFrames Zeile für Zeile durch
Die Python-Pandas-Funktion DataFrame.iterrows() hilft dir dabei, durch die Zeilen eines Pandas DataFrames zu iterieren. Du erhältst pro Zeile ein Python Tuple, das aus dem Index und einer Series mit den Zeilendaten besteht.
Syntax von Pandas iterrows()
Die Anwendung von Pandas DataFrame.iterrows() ist unkompliziert, da die Funktion keine Parameter benötigt:
df.iterrows()pythonIm Beispiel oben steht df für den DataFrame, den du durchlaufen möchtest.
Anwendung der Pandas-iterrows()-Funktion
Nutze die Funktion DataFrame.iterrows() immer dann, wenn du Daten zeilenweise bearbeiten willst. Meistens geschieht dies in Kombination mit Python-for-Loops.
Werte einer Spalte addieren
Schauen wir uns einen DataFrame mit den Spalten Name, Alter und Punktzahl an:
import pandas as pd
# Beispiel-DataFrame erstellen
data = {'Name': ['Anna', 'Ben', 'Clara'],
'Alter': [23, 35, 29],
'Punktzahl': [88, 92, 85]}
df = pd.DataFrame(data)
print(df)pythonDieser Code erzeugt folgenden DataFrame:
Name Alter Punktzahl
0 Anna 23 88
1 Ben 35 92
2 Clara 29 85Um die Summe der Punktzahlen zu ermitteln, kannst du Pandas DataFrame.iterrows() verwenden:
# Summe der Punktzahlen berechnen
total_score = 0
for index, row in df.iterrows():
total_score += row['Punktzahl']
print(f"Die Gesamtsumme der Punktzahlen beträgt: {total_score}")pythonHier nutzt du die Pandas-iterrows()-Funktion, um durch die Zeilen zu gehen und die Werte der Spalte Punktzahl Schritt für Schritt zu addieren. So sieht das Resultat aus:
Die Gesamtsumme der Punktzahlen beträgt: 265Achte bei der Arbeit mit Pandas iterrows() darauf, die Daten während der Iteration nicht direkt zu ändern. Das führt oft nicht zum gewünschten Ergebnis und kann Fehler verursachen.
Zeilen nach Bedingungen bearbeiten
Mit iterrows() kannst du auch Bedingungen auf einzelne Zeilen anwenden. Angenommen, du möchtest aus dem DataFrame alle Namen herausfiltern, die über 30 Jahre alt sind:
# Namen von Personen abrufen, die älter als 30 sind
names = []
for index, row in df.iterrows():
if row['Alter'] > 30:
names.append(row['Name'])
print(f"Personen älter als 30 Jahre: {names}")pythonHier wird mittels Pandas DataFrame.iterrows() der Datensatz durchlaufen. In der for-Schleife prüfen wir das Alter und speichern nur passende Namen in der Python-Liste names. Dafür kommt die Python-append()-Funktion zum Einsatz. Das Ergebnis:
Personen älter als 30 Jahre: ['Ben']Pandas DataFrames.iterrows() ist zwar intuitiv, bei sehr großen DataFrames aber oft weniger effizient. In solchen Fällen fährst du mit Alternativen wie apply() oder vektorisierten Operationen meist besser.