HOWTO · Pandas

Iterieren durch Spalten eines Pandas DataFrame

Dieses Tutorial demonstriert, wie man durch die Spalten eines DataFrames iteriert

Auf dieser Seite

Um die Spalten eines Pandas-DataFrame zu durchlaufen, iterieren Sie über den DataFrame und erhalten so die Bezeichnung jeder Spalte. Mit df[column] wählen Sie die zugehörige Spalte als Serie aus. Verwenden Sie DataFrame.items(), wenn Sie Bezeichnung und Serie gemeinsam benötigen, oder enumerate(), wenn Sie zusätzlich die Position der Spalte brauchen.

Spalten mit einer for-Schleife und df[column] durchlaufen

Eine Schleife über einen DataFrame durchläuft dessen Spaltenbezeichnungen. Bei jedem Durchlauf wählt df[column] die Serie aus, die zu dieser Bezeichnung gehört. Dieses Beispiel gibt zunächst die Spaltenbezeichnung und anschließend die Werte der Spalte als Python-Liste aus:

import pandas as pd

df = pd.DataFrame(
    {"name": ["Ada", "Lin"], "score": [9, 8]}
)

for column in df:
    print(column, df[column].tolist())
name ['Ada', 'Lin']
score [9, 8]

Die Schleifenvariable enthält eine Bezeichnung wie name oder score, keine Zeilennummer. Die ausgewählte Serie behält den Zeilenindex des DataFrame bei. Wandeln Sie sie nur dann mit .tolist() in eine Liste um, wenn Sie für den nächsten Schritt eine Liste benötigen; .values stellt stattdessen eine arrayähnliche Darstellung bereit.

Spaltenbezeichnungen und Serien mit DataFrame.items() durchlaufen

DataFrame.items() liefert jede Spaltenbezeichnung zusammen mit der zugehörigen Serie. Entpacken Sie dieses Paar, um direkt mit beiden Werten zu arbeiten. Dieses Beispiel gibt jede Bezeichnung und die Werte ihrer Serie aus:

import pandas as pd

df = pd.DataFrame(
    {"name": ["Ada", "Lin"], "score": [9, 8]}
)

for column_label, series in df.items():
    print(column_label, series.tolist())
name ['Ada', 'Lin']
score [9, 8]

Wählen Sie dieses Muster, wenn Ihre Verarbeitung in derselben Schleife sowohl die Bezeichnung als auch die zugehörige Serie benötigt. Sie können beispielsweise jede Spalte separat formatieren oder zusammenfassen. Lässt sich eine Berechnung auf den gesamten DataFrame anwenden, ist eine vektorisierte Pandas-Operation möglicherweise übersichtlicher, als die Spalten einzeln zu verarbeiten.

Position und Bezeichnung jeder Spalte mit enumerate() ermitteln

Umschließen Sie df.columns mit Pythons integrierter Funktion enumerate(), um jede Bezeichnung ihrer nullbasierten Position in der Spaltenfolge zuzuordnen. Das Beispiel gibt zuerst die nullbasierte Position und dann die Bezeichnung jeder Spalte aus:

import pandas as pd

df = pd.DataFrame(
    {"name": ["Ada", "Lin"], "score": [9, 8]}
)

for position, column_label in enumerate(df.columns):
    print(position, column_label)
0 name
1 score

Dabei ist position für die erste Spalte 0, für die zweite 1 und so weiter. Diese Position unterscheidet sich vom Zeilenindex, der Zeilen identifiziert und auch Werte enthalten kann, die keine fortlaufenden Ganzzahlen sind. Verwenden Sie diese Variante, wenn ein weiterer Verarbeitungsschritt neben der Bezeichnung auch die Reihenfolge der Spalte benötigt. Ist die Position unwichtig, genügt die einfache Schleife oder DataFrame.items().