Fortgeschrittenes Merging und Joining
pd.merge() mit how, on, left_on/right_on, suffixes und merge_asof für zeitbasierte Joins.
Fortgeschrittenes Merging und Joining ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
DataFrames kombinieren
pd.merge verknüpft zwei DataFrames anhand gemeinsamer Schlüssel, genau wie ein SQL-JOIN. Die how-Optionen sicher zu beherrschen ist für die Arbeit mit relationalen Daten unerlässlich.
import pandas as pd
left = pd.DataFrame({"id": [1, 2, 3], "name": ["a", "b", "c"]})
right = pd.DataFrame({"id": [2, 3, 4], "score": [90, 80, 70]})Inner Join (Standard)
how="inner" behält nur Schlüssel, die in BEIDEN DataFrames vorhanden sind. Dies ist der Standard.
print(pd.merge(left, right, on="id", how="inner"))
# id name score
# 0 2 b 90
# 1 3 c 80Left Join
how="left" behält jede Zeile aus dem linken DataFrame; nicht übereinstimmende Spalten der rechten Seite werden zu NaN. Dies ist der häufigste Join in der Datenanalyse.
print(pd.merge(left, right, on="id", how="left"))
# id name score
# 0 1 a NaN
# 1 2 b 90.0
# 2 3 c 80.0Outer Join
how="outer" behält alle Schlüssel beider Seiten und füllt Lücken mit NaN. Verwenden Sie dies, um die vollständige Vereinigung aller Datensätze zu sehen.
print(pd.merge(left, right, on="id", how="outer"))
# includes id 1 (no score) and id 4 (no name)Join mit unterschiedlichen Spaltennamen
Wenn die Schlüsselspalten unterschiedlich benannt sind, verwenden Sie statt on die Argumente left_on und right_on.
r2 = right.rename(columns={"id": "user_id"})
print(pd.merge(left, r2, left_on="id", right_on="user_id"))Suffixe für überlappende Spalten
Wenn beide DataFrames eine Nicht-Schlüsselspalte mit demselben Namen enthalten, hängt pandas _x und _y an. Überschreiben Sie diese Suffixe mit suffixes, um für Klarheit zu sorgen.
a = pd.DataFrame({"id": [1], "val": [10]})
b2 = pd.DataFrame({"id": [1], "val": [99]})
print(pd.merge(a, b2, on="id", suffixes=("_old", "_new")))Die indicator-Spalte
indicator=True fügt eine _merge-Spalte hinzu, die die Herkunft jeder Zeile angibt: left_only, right_only oder both. Das ist für die Überprüfung von Joins äußerst wertvoll.
print(pd.merge(left, right, on="id", how="outer", indicator=True))
# _merge tells you where each row came fromProbleme bei Joins diagnostizieren
Durch das Filtern nach dem Indikator lassen sich nicht übereinstimmende Schlüssel schnell erkennen – eine häufige Ursache für unbemerkt verworfene Daten.
m = pd.merge(left, right, on="id", how="outer", indicator=True)
print(m[m["_merge"] != "both"]) # rows that did not matchmerge_asof für zeitbasierte Joins
pd.merge_asof führt Joins anhand des NÄCHSTGELEGENEN Schlüssels statt anhand einer exakten Übereinstimmung durch. Die Funktion wurde speziell für die Ausrichtung von Zeitreihen entwickelt, zum Beispiel um jedem Trade die zuletzt davor liegende Kursnotierung zuzuordnen. Beide DataFrames müssen nach dem Schlüssel sortiert sein.
trades = pd.DataFrame({"time": [1, 3, 7], "price": [10, 11, 12]})
quotes = pd.DataFrame({"time": [0, 2, 5], "bid": [9, 10, 11]})
print(pd.merge_asof(trades, quotes, on="time"))Richtung von merge_asof
Standardmäßig sucht merge_asof RÜCKWÄRTS (nach dem letzten Schlüssel am oder vor dem aktuellen). Verwenden Sie direction="forward" oder "nearest", um die Zuordnungsregel zu ändern.
print(pd.merge_asof(trades, quotes, on="time", direction="nearest"))Den richtigen Join auswählen
Verwenden Sie inner, um nur Übereinstimmungen beizubehalten, left, um eine Primärtabelle anzureichern, outer für die vollständige Vereinigung und merge_asof für zeitlich ausgerichtete Joins mit Schlüsseln, die ungefähr übereinstimmen.
Kurzer Test
Testen Sie Ihr Wissen über Joins.
Zusammenfassung
Werkzeuge zum Zusammenführen:
how=inner / left / outer steuert, welche Schlüssel erhalten bleibenongegenüberleft_on/right_onfür die Schlüsselspaltensuffixesunterscheiden überlappende Namenindicator=Trueüberprüft die Herkunft der Zeilenpd.merge_asoffür zeitbasierte Joins nach dem nächstgelegenen Schlüssel (zuerst sortieren)
Häufig gestellte Fragen
Ist die Lektion „Fortgeschrittenes Merging und Joining“ kostenlos?
Ja — der vollständige Text von „Fortgeschrittenes Merging und Joining“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Fortgeschrittenes Merging und Joining“?
pd.merge() mit how, on, left_on/right_on, suffixes und merge_asof für zeitbasierte Joins. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Learn AI with Python zu starten?
Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Fortgeschrittenes Merging und Joining“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?
Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- GroupBy und Aggregation
- Pivot-Tabellen und Kreuztabellierung
- Fortgeschrittenes Merging und Joining
- Zeitreihen in Pandas