Wie man zwei Pandas DataFrames verbindet: Erklärt!
Published on
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.
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:
- Dictionary in DataFrame in Pandas umwandeln
- Zugriff auf Zeilen und Spalten in Pandas DataFrame mit loc und iloc
- Hinzufügen einer Spalte zu Pandas DataFrame | Pandas-Tutorial
- DataFrame in R erstellen | R DataFrame-Tutorial
- Einen oder mehrere Spaltennamen in Pandas DataFrame umbenennen | Pandas-Tutorial