Skip to content
Anleitungen
Python
Wie man zwei Pandas DataFrames verbindet: Erklärt!

Wie man zwei Pandas DataFrames verbindet: Erklärt!

Pandas ist eines der beliebtesten Open-Source-Tools für Data Science. Es bietet DataFrame-Strukturen, die eine leistungsstarke Verarbeitung von tabellarischen Daten für Manipulation, Bereinigung, Analyse und Visualisierung ermöglichen. In Pandas ist es häufig erforderlich, zwei oder mehr DataFrames zusammenzuführen, um eine Art von Datenanalyse durchzuführen. Wir können dies erreichen, indem wir die DataFrames entweder horizontal oder vertikal kombinieren. Hier werden wir beide Methoden ausführlich veranschaulichen und diskutieren.

Möchten Sie schnell Datenvisualisierungen aus einem Python Pandas DataFrame ohne Code erstellen?

PyGWalker ist eine Python-Bibliothek für explorative Datenanalyse mit Visualisierung. PyGWalker (opens in a new tab) kann Ihren Workflow zur Datenanalyse und Datenvisualisierung in Jupyter Notebooks vereinfachen, indem es Ihr Pandas DataFrame (und Polars DataFrame) in eine benutzerfreundliche Benutzeroberfläche im Tableau-Stil für visuelle Exploration umwandelt.

PyGWalker für Datenvisualisierung (opens in a new tab)

Verknüpfen von zwei DataFrames vertikal

In Pandas können zwei DataFrames mit der Methode concat() verknüpft werden. Um dies zu demonstrieren, werden wir zunächst zwei Beispieldataframes erstellen. Im ersten Beispieldataframe haben wir Informationen über einige Mitarbeiter in einem Unternehmen:

import pandas as pd
 
# Erstellen des DataFrame 1
df1 = pd.DataFrame({
    'Name': ['John', 'Jack', 'Steve', 'Sarah'],
    'Age': [24, 32, 19, 29],
    'Gender': ['M', 'M', 'M', 'F']
})

Dadurch wird ein DataFrame erstellt, das wie folgt aussieht:

    Name    Age Gender
0   John    24     M
1   Jack    32     M
2   Steve   19     M
3   Sarah   29     F

Angenommen, wir haben einen weiteren DataFrame, der Informationen über die Abteilungen im Unternehmen enthält:

# Erstellen des DataFrame 2
df2 = pd.DataFrame({
    'Abteilung': ['Marketing', 'Vertrieb', 'Personal'],
    'Mitarbeiter': [15, 12, 10],
})

Dadurch wird ein DataFrame erstellt, das wie folgt aussieht:

        Abteilung          Mitarbeiter
0       Marketing          15
1       Vertrieb           12
2       Personal           10

Nun können wir die Methode concat() verwenden, um die beiden DataFrames vertikal zu kombinieren:

# Vertikales Verknüpfen
df3 = pd.concat([df1, df2], axis=0)

Hier gibt der Parameter axis=0 an, dass wir die DataFrames übereinander stapeln möchten (d. h. vertikal). Nach der Verknüpfung erhalten wir die folgende Ausgabe:

    Name    Age Gender  Abteilung       Mitarbeiter
0   John    24      M        NaN             NaN
1   Jack    32      M        NaN             NaN
2   Steve   19      M        NaN             NaN
3   Sarah   29      F        NaN             NaN
0   NaN     NaN    NaN    Marketing          15
1   NaN     NaN    NaN    Vertrieb           12
2   NaN     NaN    NaN    Personal           10

Wir können sehen, dass die beiden DataFrames wie gewünscht verknüpft sind, aber es gibt einige NaN (null) Werte im neuen DataFrame, wo die Spaltennamen nicht übereinstimmen. Wir können diese Zeilen löschen, wenn sie nicht zu unserer Datenanalyse passen, oder wir können einige Standardwerte angeben, um die Nullwerte zu füllen.

Verknüpfen von zwei DataFrames horizontal

Wir können auch zwei DataFrames horizontal verknüpfen (d. h. sie nebeneinander platzieren) mithilfe der Methode concat(), wie folgt:

# Horizontales Verknüpfen
df4 = pd.concat([df1, df2], axis=1)

Hier gibt der Parameter axis=1 an, dass wir die DataFrames nebeneinander platzieren möchten (d. h. horizontal). Nach der Verknüpfung erhalten wir die folgende Ausgabe:

    Name    Age Gender    Abteilung     Mitarbeiter
0   John    24     M      Marketing            15
1   Jack    32     M      Vertrieb             12
2   Steve   19     M      Personal             10
3   Sarah   29     F      NaN                  NaN

Wir können sehen, dass die beiden DataFrames horizontal wie gewünscht verknüpft sind. Allerdings haben wir einige NaN-Werte (null) im neuen DataFrame, wo die Zeilennamen nicht übereinstimmen. Auch hier können wir diese Zeilen löschen, wenn sie nicht zu unserer Datenanalyse passen, oder wir können einige Standardwerte angeben, um die Nullwerte zu füllen.

Verknüpfen von DataFrames mit unterschiedlichen Spalten

Was passiert, wenn die zu verknüpfenden DataFrames unterschiedliche Spalten haben? In solchen Fällen erkennt Pandas die nicht übereinstimmenden Spaltennamen und fügt sie als separate Spalten zum neuen DataFrame hinzu. Dies wollen wir mit einem Beispiel verdeutlichen:

# Erstellen eines DataFrame mit unterschiedlichen Spalten
df5 = pd.DataFrame({
    'Mitarbeitername': ['John', 'Jack', 'Steve', 'Sarah'],
    'Mitarbeiteralter': [24, 32, 19, 29],
    'Jobtitel': ['Manager', 'Assistent', 'Mitarbeiter', 'Führungskraft']
})

Dadurch wird ein DataFrame erstellt, das wie folgt aussieht:

    Mitarbeitername   Mitarbeiteralter   Jobtitel
0       John               24            Manager
1       Jack               32            Assistent
2       Steve              19            Mitarbeiter
3       Sarah              29            Führungskraft

Nun können wir df1 und df5 verknüpfen:

# Verknüpfen von df1 und df5
df6 = pd.concat([df1, df5], axis=1)

Nach der Verknüpfung erhalten wir die folgende Ausgabe:

    Name    Age Gender      Mitarbeitername   Mitarbeiteralter   Jobtitel
0   John    24     M       John               24            Manager
1   Jack    32     M       Jack               32            Assistent
2   Steve   19     M       Steve              19            Mitarbeiter
3   Sarah   29     F       Sarah              29            Führungskraft

Wie wir sehen können, verbindet Pandas die beiden DataFrames, indem es die Spalten, die nicht übereinstimmen, als separate Spalten im neuen DataFrame hinzufügt.

Ignorieren des Index beim horizontalen Verbinden von DataFrames

Beim horizontalen Verbinden von zwei DataFrames behält der resultierende DataFrame die ursprünglichen Indizes der beiden DataFrames bei. Dies kann beim Arbeiten mit diesem neuen DataFrame Probleme verursachen. Daher kann es in einigen Fällen erforderlich sein, den Index beim horizontalen Verbinden zu ignorieren. Dies kann erreicht werden, indem der ignore_index-Parameter auf True gesetzt wird:

# Verbinden von df1 und df2 unter Ignorierung des Index
df7 = pd.concat([df1, df2], axis=1, ignore_index=True)

Nach der Verbindung erhalten wir folgende Ausgabe:

    0       1   2   3               4
0   John    24  M   Marketing      15
1   Jack    32  M   Sales          12
2   Steve   19  M   Human Resources 10
3   Sarah   29  F   NaN            NaN

Der neue DataFrame hat jetzt einen neuen Index, was praktischer ist für weitere Datenanalysen.

Fazit

Die Verbindung von Pandas DataFrames vertikal oder horizontal bietet uns eine effiziente Möglichkeit, Daten für die Analyse zu fusionieren. Mit dieser Anleitung haben wir die Grundlagen der Verbindung mit der concat()-Methode abgedeckt. Mit etwas Übung und mehr Wissen über Pandas DataFrames können Sie große Datenmengen in Erkenntnisse umwandeln. Wenn Sie mehr über Pandas erfahren möchten, schauen Sie sich unsere Pandas-Tutorialseiten unten an: