Pandas DataFrames auf Index zusammenführen
-
Verwenden Sie
merge()
, um zwei Pandas DataFrames im Index zu kombinieren -
Verwenden Sie
join()
, um zwei Pandas DataFrames auf dem Index zu kombinieren
In der Welt der Data Science und des maschinellen Lernens ist es unerlässlich, die Operationen zum Organisieren, Verwalten und Bereinigen von Daten für die weitere Analyse zu beherrschen. Das Zusammenführen von zwei DataFrames ist ein Beispiel für eine solche Operation. Es stellt sich heraus, dass es einfach ist, zwei DataFrames mit Hilfe der Pandas-Bibliothek in Python zu kombinieren.
Pandas bietet uns zwei nützliche Funktionen, merge()
und join()
, um zwei DataFrames zu kombinieren. Beide Methoden sind sich sehr ähnlich, aber merge()
gilt als vielseitiger und flexibler. Sie bietet auch viele Parameter, um das Verhalten des endgültigen DataFrames zu verändern. join()
kombiniert die beiden DataFrames über ihre Indizes, während merge()
uns erlaubt, die Spalten zu spezifizieren, die als Schlüssel zum Zusammenführen zweier DataFrames dienen können.
Ein gemeinsamer Parameter dieser beiden Funktionen, mit dem man vertraut sein sollte, ist how
, der den Typ der Verknüpfung definiert. Standardmäßig ist der how
-Parameter inner
für merge()
und left
für join()
, aber für beide kann er in left
, right
, inner
und outer
geändert werden. Es ist wichtig, den Unterschied zwischen all diesen Begriffen zu kennen.
Wenn wir zwei Pandas DataFrames kombinieren, nehmen wir an, dass einer der linke DataFrame und der andere der rechte DataFrame ist. Sowohl merge()
als auch join()
gleichen die Datensätze der Schlüsselspalten ab. Die innere
Verknüpfung gibt einen DataFrame mit Datensätzen zurück, die in beiden DataFrames übereinstimmen. Die outer
-Verknüpfung erzeugt einen zusammengeführten DataFrame mit allen Elementen in beiden DataFrames und füllt NaN für fehlende Werte auf beiden Seiten. Die Verknüpfung left
enthält alle Elemente des linken DataFrames, aber nur die übereinstimmenden Datensätze des rechten DataFrames. Das Gegenteil von left
ist right
, das alle Elemente des rechten DataFrame und nur die übereinstimmenden Datensätze des linken DataFrame enthält. All dies wird im Beispielcode in den kommenden Abschnitten deutlicher, wo wir die DataFrames im folgenden Code kombinieren werden:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(["a", "b", "d", "e", "h"], index=[1, 2, 4, 5, 7], columns=["C1"])
df2 = pd.DataFrame(
["AA", "BB", "CC", "EE", "FF"], index=[1, 2, 3, 5, 6], columns=["C2"]
)
print(df1)
print(df2)
Ausgabe:
C1
1 a
2 b
4 d
5 e
7 h
C2
1 AA
2 BB
3 CC
5 EE
6 FF
Verwenden Sie merge()
, um zwei Pandas DataFrames im Index zu kombinieren
Wenn Sie zwei DataFrames auf dem Index zusammenführen, sollte der Wert der Parameter left_index
und right_index
der Funktion merge()
auf True
stehen. Das folgende Codebeispiel kombiniert zwei DataFrames mit inner
als Verknüpfungstyp:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(["a", "b", "d", "e", "h"], index=[1, 2, 4, 5, 7], columns=["C1"])
df2 = pd.DataFrame(
["AA", "BB", "CC", "EE", "FF"], index=[1, 2, 3, 5, 6], columns=["C2"]
)
df_inner = df1.merge(df2, how="inner", left_index=True, right_index=True)
print(df_inner)
Ausgabe:
C1 C2
1 a AA
2 b BB
5 e EE
Der folgende Code wird die DataFrames mit dem Join-Typ outer
zusammenführen:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(["a", "b", "d", "e", "h"], index=[1, 2, 4, 5, 7], columns=["C1"])
df2 = pd.DataFrame(
["AA", "BB", "CC", "EE", "FF"], index=[1, 2, 3, 5, 6], columns=["C2"]
)
df_outer = df1.merge(df2, how="outer", left_index=True, right_index=True)
print(df_outer)
Ausgabe:
C1 C2
1 a AA
2 b BB
3 NaN CC
4 d NaN
5 e EE
6 NaN FF
7 h NaN
Wie Sie sehen, enthält der zusammengeführte DataFrame mit dem Verknüpfungstyp inner
nur übereinstimmende Datensätze aus beiden DataFrames, während derjenige mit dem Verknüpfungstyp outer
alle Elemente enthält, wobei fehlende Datensätze mit NaN
gefüllt werden. Jetzt durch Verwendung von left
join:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(["a", "b", "d", "e", "h"], index=[1, 2, 4, 5, 7], columns=["C1"])
df2 = pd.DataFrame(
["AA", "BB", "CC", "EE", "FF"], index=[1, 2, 3, 5, 6], columns=["C2"]
)
df_left = df1.merge(df2, how="left", left_index=True, right_index=True)
print(df_left)
Ausgabe:
C1 C2
1 a AA
2 b BB
4 d NaN
5 e EE
7 h NaN
Der obige zusammengeführte DataFrame hat alle Elemente aus dem linken DataFrame, und nur die übereinstimmenden Datensätze aus dem rechten DataFrame. Das genaue Gegenteil ist die “rechte” Verknüpfung, wie unten gezeigt:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(["a", "b", "d", "e", "h"], index=[1, 2, 4, 5, 7], columns=["C1"])
df2 = pd.DataFrame(
["AA", "BB", "CC", "EE", "FF"], index=[1, 2, 3, 5, 6], columns=["C2"]
)
df_right = df1.merge(df2, how="right", left_index=True, right_index=True)
print(df_right)
Ausgabe:
C1 C2
1 a AA
2 b BB
3 NaN CC
5 e EE
6 NaN FF
Verwenden Sie join()
, um zwei Pandas DataFrames auf dem Index zu kombinieren
Die Methode join()
kombiniert die beiden DataFrames basierend auf ihren Indizes, und standardmäßig ist der Join-Typ left
. Sie verwendet immer den Index des rechten DataFrames, aber wir können den Schlüssel für den linken DataFrame angeben. Wir können die Verknüpfungstypen für die Funktion join()
genauso angeben, wie wir sie für merge()
angeben.
Das folgende Beispiel zeigt einen zusammengeführten DataFrame mit dem Verknüpfungstyp outer
:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(["a", "b", "d", "e", "h"], index=[1, 2, 4, 5, 7], columns=["C1"])
df2 = pd.DataFrame(
["AA", "BB", "CC", "EE", "FF"], index=[1, 2, 3, 5, 6], columns=["C2"]
)
df_outer = df1.join(df2, how="outer")
print(df_outer)
Ausgabe:
C1 C2
1 a AA
2 b BB
3 NaN CC
4 d NaN
5 e EE
6 NaN FF
7 h NaN
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedInVerwandter Artikel - Pandas DataFrame
- Wie man Pandas DataFrame-Spaltenüberschriften als Liste erhält
- Pandas DataFrame-Spalte löschen
- Wie man DataFrame-Spalte in Datetime in Pandas konvertiert
- Wie konvertiert man eine Fließkommazahl in eine Ganzzahl in Pandas DataFrame
- Wie man Pandas-DataFrame nach den Werten einer Spalte sortiert
- Wie erhält man das Aggregat der Pandas gruppenweise und sum