HOWTO · Python

Importieren Sie mehrere CSV-Dateien in Pandas und verketten Sie sie zu einem DataFrame

Dieses Tutorial zeigt, wie Sie mehrere CSV-Dateien mit Pandas importieren und zu einem einzigen DataFrame verketten.

Auf dieser Seite

Lies jede passende CSV-Datei mit pandas.read_csv() ein und führe die resultierenden DataFrames anschließend mit pd.concat() zusammen. Dazu suchst du die Dateien in einem Ordner, liest sie in einer festgelegten Reihenfolge ein und erstellst einen einzelnen DataFrame mit einem neuen Zeilenindex. Installiere zuerst das Paket pandas, falls es in deiner Python-Umgebung noch nicht verfügbar ist.

Eine einzelne CSV-Datei mit pandas einlesen

Das Paket pandas stellt read_csv() bereit, um eine CSV-Datei in einen DataFrame einzulesen. Für eine Datei rufst du df = pd.read_csv("sales.csv") auf und ersetzt den Dateinamen durch den Pfad zu deinen Daten. Standardmäßig verwendet die Funktion die erste Zeile als Spaltennamen. Prüfe daher anhand der Spaltenbezeichnungen im resultierenden DataFrame, ob die Datei wie erwartet eingelesen wurde. Im Ablauf für mehrere Dateien verwendest du denselben Aufruf für jeden Pfad.

CSV-Dateien mit glob finden und Pfade erstellen

Das Python-Standardmodul glob findet Pfade, die einem Muster entsprechen; ein zusätzliches Paket musst du dafür nicht installieren. glob.glob() gibt die passenden Pfade als Liste zurück. Verbinde einen Ordner und ein Dateinamensmuster mit os.path.join(), damit Python den für die jeweilige Plattform passenden Pfadtrenner verwendet:

pattern = os.path.join(folder, "*.csv")

Das Muster *.csv findet CSV-Dateien direkt im ausgewählten Ordner. Sollen auch Unterordner durchsucht werden, verwende ein rekursives Glob-Muster und setze bei glob.glob() den Parameter recursive=True. Unter Windows verhindert ein Raw-String wie r"C:\data\sales", dass Backslashes als Escape-Sequenzen interpretiert werden. Mit os.path.join() kannst du das Dateinamensmuster an diesen Ordnerpfad anhängen.

Mehrere CSV-Dateien einlesen und die DataFrames zusammenführen

Sammle die passenden Pfade, rufe für jeden Pfad einmal read_csv() auf und übergib die resultierenden DataFrames anschließend an pd.concat(..., ignore_index=True). Dieses vollständige Beispiel erstellt zwei kleine CSV-Dateien in einem temporären Ordner und lässt sich daher ohne zusätzliche Dateien ausführen. Für eigene Daten ersetzt du die Einrichtung der Beispieldateien durch einen folder-Pfad und behältst die Schritte zum Finden der Pfade, Einlesen und Zusammenführen bei. Findet das Muster keine Dateien, gibt das Beispiel eine Meldung aus und überspringt das Einlesen und Zusammenführen. Die abschließende Ausgabe zeigt die zusammengeführten Zeilen, wenn Dateien gefunden wurden.

import glob
import os
import tempfile
from pathlib import Path

import pandas as pd

with tempfile.TemporaryDirectory() as temp_dir:
    folder = Path(temp_dir)
    (folder / "jan.csv").write_text("month,sales\nJan,10\n", encoding="utf-8")
    (folder / "feb.csv").write_text("month,sales\nFeb,12\n", encoding="utf-8")

    pattern = os.path.join(str(folder), "*.csv")
    csv_paths = sorted(glob.glob(pattern))
    if not csv_paths:
        print("No CSV files found.")
    else:
        dataframes = [pd.read_csv(csv_path) for csv_path in csv_paths]
        combined = pd.concat(dataframes, ignore_index=True)
        print(combined.to_string(index=False))
month  sales
  Feb     12
  Jan     10

Durch das Sortieren der Pfade wird die Dateireihenfolge vorhersehbar: Die Zeilen folgen zuerst dieser Reihenfolge und behalten innerhalb jeder Datei ihre ursprüngliche Reihenfolge. ignore_index=True weist allen zusammengeführten Zeilen einen neuen fortlaufenden Index zu. Haben die Dateien unterschiedliche Spaltennamen, richtet pandas die Werte anhand der Spaltenbezeichnungen aus und trägt für fehlende Werte NaN ein. Verwende einheitliche Spaltennamen, wenn jede Zeile dieselben Felder enthalten soll. Prüfe vor dem Zusammenführen, ob die Trefferliste Dateien enthält, denn pd.concat() benötigt mindestens einen DataFrame. Werden keine Dateien gefunden, passe den Ordner oder das Muster an, bevor du mit dem Einlesen und Zusammenführen fortfährst.