English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Pandas Verknüpfung

Beispiel für die Verbindungsbetrieb von Pandas

Pandas verfügt über leistungsstarke, in der Memory ablaufenden Verbindungsoperationen, die sehr ähnlich zu den Funktionen von SQL-Datenbanken sind.
Pandas bietet eine einzige Funktion merge als Einstiegspunkt für alle Standarddatenbankverbindungsoperationen zwischen DataFrame-Objekten.

 pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
 left_index=False, right_index=False, sort=True)

Hier verwenden wir die folgenden Parameter:

left − Ein DataFrame-Objekt. right − Ein weiteres DataFrame-Objekt. on − Die Spalten (Namen) werden oben hinzugefügt. Diese müssen in beiden DataFrame-Objekten gefunden werden. left_on − Die Spalten des linken DataFrame werden als Schlüssel verwendet. Dies können Spaltennamen oder Arrays sein, die die Länge des DataFrames haben, und deren Länge gleich der Länge des DataFrames ist. right_on − Die Spalten des rechten DataFrame werden als Schlüssel verwendet. Dies können Spaltennamen oder Arrays sein, die die Länge des DataFrames haben, und deren Länge gleich der Länge des DataFrames ist. left_index − Wenn True, wird der linke Index (Zeilenbezeichner) des DataFrame als Verbindungsschlüssel verwendet. Wenn das DataFrame einen MultiIndex (hierarchischen) hat, muss die Anzahl der Ebenen mit der Anzahl der Verbindungsschlüssel im rechten DataFrame übereinstimmen. right_index − Die gleiche Verwendung als left_index für den korrekten Datenrahmen. how − Eine von "links", "rechts", "außen" oder "innen" auswählen. Standardmäßig ist dies innen. Jede Methode wird unten beschrieben. sort − Die Ergebnisse der sortierten Datenbox werden in der Reihenfolge der Wörterbuchschlüssel hinzugefügt. Standardmäßig ist dies auf True eingestellt, und in vielen Fällen verbessert die Einstellung auf False die Leistung erheblich.

Nun lassen Sie uns zwei verschiedene DataFrame erstellen und deren Kombinationsoperationen ausführen.

# import the pandas library
 import pandas as pd
 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    right = pd.DataFrame({1','id': [2','id': [3','id': [4','id': [5,
    'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],12465']})
 right = pd.DataFrame(
    {'id': [1','id': [2','id': [3','id': [4','id': [5,
    ],
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],24365})
 print(left
 print(right)

Das Ergebnis des Laufens ist wie folgt:

      Name  id   subject_id
0   Alex   1         sub1
1    Amy   2         sub2
2  Allen   3         sub4
3  Alice   4         sub6
4  Ayoung  5         sub5
    Name  id   subject_id
0  Billy   1         sub2
1  Brian   2         sub4
2  Bran    3         sub3
3  Bryce   4         sub6
4  Betty   5         sub5

Zwei Datenframes auf einem Schlüssel zusammenführen

 import pandas as pd
 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    right = pd.DataFrame({1','id': [2','id': [3','id': [4','id': [5,
    'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],12465']})
 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
 right = pd.DataFrame({1','id': [2','id': [3','id': [4','id': [5,
    ],
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],24365']})
 print(pd.merge(left, right, on='id'))

Das Ergebnis des Laufens ist wie folgt:

     Name  id  subject_id_x   Name_y   subject_id_y
0  Alex      1          sub1    Billy           sub2
1  Amy       2          sub2    Brian           sub4
2  Allen     3          sub4     Bran           sub3
3  Alice     4          sub6    Bryce           sub6
4  Ayoung    5          sub5    Betty           sub5

Zwei Datenframes auf mehreren Schlüsseln zusammenführen

 import pandas as pd
 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    right = pd.DataFrame({1','id': [2','id': [3','id': [4','id': [5,
    'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],12465']})
 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
 right = pd.DataFrame({1','id': [2','id': [3','id': [4','id': [5,
    ],
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],24365']})
 print(pd.merge(left, right, on=['id', 'subject_id']))

Das Ergebnis des Laufens ist wie folgt:

      Name_x   id   subject_id   Name_y
0    Alice    4         sub6    Bryce
1   Ayoung    5         sub5    Betty

Kombination mit dem 'how'-Parameter

Der how-Parameter der Kombination legt fest, wie man bestimmen kann, welche Schlüssel in der Ergebnistabelle enthalten sein sollen. Wenn die Kombinationsschlüssel in der linken oder rechten Tabelle nicht vorhanden sind, sind die Werte in der Verknüpfungstabelle NA.

Hier eine Zusammenfassung, wie man wählt und ihre SQLäquivalenten Namen:

KombinationsmethodeSQL ÄquivalentBeschreibung
leftLEFT OUTER JOINVerwendung der Schlüssel des linken Objekts
rightRIGHT OUTER JOINVerwendung der richtigen Schlüssel des Objekts
outerFULL OUTER JOINVerwendung der kombinierten Schlüssel
innerINNER JOINVerwendung der Schnittmenge der Schlüssel

Linker Join

 import pandas as pd
 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    right = pd.DataFrame({1','id': [2','id': [3','id': [4','id': [5,
    'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],12465']})
 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    right = pd.DataFrame({1','id': [2','id': [3','id': [4','id': [5,
    ],
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],24365']})
 print(pd.merge(left, right, on='subject_id', how='left'))

Das Ergebnis des Laufens ist wie folgt:

      Name_x   id_x   subject_id   Name_y   id_y
0     Alex      1         sub1      NaN    NaN
1      Amy      2         sub2    Billy    1.0
2    Allen      3         sub4    Brian    2.0
3    Alice      4         sub6    Bryce    4.0
4   Ayoung      5         sub5    Betty    5.0

Rechter Join

 import pandas as pd
 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    right = pd.DataFrame({1','id': [2','id': [3','id': [4','id': [5,
    'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],12465']})
 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    right = pd.DataFrame({1','id': [2','id': [3','id': [4','id': [5,
    ],
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],24365']})
 print(pd.merge(left, right, on='subject_id', how='right'))

Das Ergebnis des Laufens ist wie folgt:

      Name_x  id_x   subject_id   Name_y   id_y
0      Amy   2.0         sub2    Billy      1
1    Allen   3.0         sub4    Brian      2
2    Alice   4.0         sub6    Bryce      4
3   Ayoung   5.0         sub5    Betty      5
4      NaN   NaN         sub3     Bran      3

Außenverbindung

 import pandas as pd
 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    right = pd.DataFrame({1','id': [2','id': [3','id': [4','id': [5,
    'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],12465']})
 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    right = pd.DataFrame({1','id': [2','id': [3','id': [4','id': [5,
    ],
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],24365']})
 print(pd.merge(left, right, how='outer', on='subject_id'))

Das Ergebnis des Laufens ist wie folgt:

      Name_x  id_x   subject_id   Name_y   id_y
0     Alex   1.0         sub1      NaN    NaN
1      Amy   2.0         sub2    Billy    1.0
2    Allen   3.0         sub4    Brian    2.0
3    Alice   4.0         sub6    Bryce    4.0
4   Ayoung   5.0         sub5    Betty    5.0
5      NaN   NaN         sub3     Bran    3.0

Innere Verknüpfung

Die Verbindung wird auf dem Index ausgeführt. Die Verknüpfung akzeptiert das Objekt, das sie aufruft. Daher ist a.join(b) nicht gleich b.join(a).

 import pandas as pd
 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    right = pd.DataFrame({1','id': [2','id': [3','id': [4','id': [5,
    'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],12465']})
 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
    right = pd.DataFrame({1','id': [2','id': [3','id': [4','id': [5,
    ],
    'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],24365']})
 print(pd.merge(left, right, on='subject_id', how='inner'))

Das Ergebnis des Laufens ist wie folgt:

      Name_x   id_x   subject_id   Name_y   id_y
0      Amy      2         sub2    Billy      1
1    Allen      3         sub4    Brian      2
2    Alice      4         sub6    Bryce      4
3   Ayoung      5         sub5    Betty      5