Wie man über Zeilen in einem DataFrame in Pandas iteriert

Um über die Zeilen eines Pandas DataFrames zu iterieren, können Sie die iterrows Methode verwenden. Diese Methode gibt einen Iterator zurück, der über alle Zeilen des DataFrames iteriert. Jede Zeile wird als Tupel aus dem Index und einer Reihe von Werten zurückgegeben. Hier ist ein Beispiel:

import pandas as pd

# Erstelle ein Beispiel-DataFrame
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6]})

# Iteriere über die Zeilen des DataFrames
for index, row in df.iterrows():
    print(index, row['col1'], row['col2'])

Das obige Beispiel würde folgendes ausgeben:

0 1 4
1 2 5
2 3 6

Sie können die Werte jeder Spalte in der Zeile über den Spaltennamen oder über die Position in der Reihe abrufen. Sie können auch den Iterator in einer List comprehension verwenden, um eine Liste der Werte für jede Spalte zu erstellen:

col1_values = [row['col1'] for index, row in df.iterrows()]

Es gibt auch andere Möglichkeiten, über die Zeilen eines DataFrames zu iterieren, wie zum Beispiel die Verwendung von apply oder itertuples. Welche Methode am besten geeignet ist, hängt von den spezifischen Anforderungen Ihres Projekts ab.

loc[] Methode

Die loc[] Methode wird verwendet, um auf Zeilen und Spalten eines DataFrame durch Labels zuzugreifen. Sie können nicht nur einzelne Labels verwenden, sondern auch Labelbereiche oder boolesche Arrays für die Auswahl.

  • Zugriff auf einzelne Werte: Sie können einen Wert aus einer bestimmten Zeile und Spalte erhalten, indem Sie df.loc[zeilenlabel, spaltenlabel] verwenden.
  • Zugriff auf Zeilen: Um eine ganze Zeile basierend auf dem Label zu erhalten, verwenden Sie df.loc[zeilenlabel].
  • Zugriff auf Spalten: Für den Zugriff auf ganze Spalten über ihre Labels nutzen Sie df.loc[:, spaltenlabel].
  • Slicing: loc[] unterstützt auch Slicing, jedoch inklusiv beider Enden, also df.loc[startzeile:endzeile, startspalte:endspalte].

iloc[] Methode

Im Gegensatz zur loc[] Methode, die labelbasiert arbeitet, verwendet iloc[] Positionen für den Zugriff auf die Daten. Das heißt, Sie arbeiten mit integer-basierten Positionen der Zeilen und Spalten.

  • Zugriff auf einzelne Werte: Ähnlich wie bei loc[], aber Sie geben die Positionen an, z.B. df.iloc[zeilenindex, spaltenindex].
  • Zugriff auf Zeilen: Um eine ganze Zeile über ihren Index zu erhalten, verwenden Sie df.iloc[zeilenindex].
  • Zugriff auf Spalten: Für den Zugriff auf ganze Spalten über ihre Indexpositionen nutzen Sie df.iloc[:, spaltenindex].
  • Slicing: iloc[] unterstützt Slicing ähnlich wie bei Python-Listen, wobei das Ende des Slices exklusiv ist, also df.iloc[startzeilenindex:endzeilenindex, startspaltenindex:endspaltenindex].

Hier sind ein paar einfache Beispiele, die zeigen, wie loc[] und iloc[] genutzt werden können:

  • Mit loc[]:
  # Zugriff auf die Zeile mit dem Label 'a' und die Spalte 'foo'
  wert = df.loc['a', 'foo']

  # Auswahl aller Zeilen zwischen 'a' und 'c', inklusive, und Spalten 'foo' und 'bar'
  teil_df = df.loc['a':'c', ['foo', 'bar']]
  • Mit iloc[]:
  # Zugriff auf die erste Zeile und die erste Spalte (beide bei Index 0)
  wert = df.iloc[0, 0]

  # Auswahl der ersten drei Zeilen und der ersten zwei Spalten
  teil_df = df.iloc[0:3, 0:2]

Diese Methoden sind besonders nützlich, wenn Sie komplexe Datenauswahlvorgänge oder Iterationen über die Zeilen eines DataFrame durchführen müssen. Dabei ist es wichtig zu beachten, dass loc[] aufgrund seiner Label-basierten Natur intuitiver sein kann, wenn Ihre Daten klare Labels haben, während iloc[] bei der Arbeit mit Datensätzen, bei denen die Position der Daten wichtiger ist, effektiver sein kann【9†source】【10†source】【11†source】.