English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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
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
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
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:
Kombinationsmethode | SQL Äquivalent | Beschreibung |
left | LEFT OUTER JOIN | Verwendung der Schlüssel des linken Objekts |
right | RIGHT OUTER JOIN | Verwendung der richtigen Schlüssel des Objekts |
outer | FULL OUTER JOIN | Verwendung der kombinierten Schlüssel |
inner | INNER JOIN | Verwendung der Schnittmenge der Schlüssel |
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
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
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
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