Pandas memiliki fitur lengkap, operasi gabungan dalam memori berkinerja tinggi yang secara idiomatis sangat mirip dengan database relasional seperti SQL
Pandas menyediakan satu fungsi, penggabungan, sebagai titik masuk untuk semua operasi gabungan basis data standar antara objek DataFrame −
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True)Di sini, kami telah menggunakan parameter berikut −
kiri - Objek DataFrame
kanan - Objek DataFrame lainnya
on − Kolom (nama) untuk bergabung. Harus ditemukan di objek DataFrame kiri dan kanan
left_on − Kolom dari DataFrame kiri untuk digunakan sebagai kunci. Bisa berupa nama kolom atau array dengan panjang yang sama dengan panjang DataFrame
right_on − Kolom dari DataFrame kanan untuk digunakan sebagai kunci. Bisa berupa nama kolom atau array dengan panjang yang sama dengan panjang DataFrame
left_index − Jika True, gunakan indeks (label baris) dari DataFrame kiri sebagai kunci gabungannya. Dalam kasus DataFrame dengan MultiIndex (hierarkis), jumlah level harus sesuai dengan jumlah kunci gabungan dari DataFrame kanan
right_index − Penggunaan yang sama seperti left_index untuk DataFrame kanan
how − Salah satu dari 'kiri', 'kanan', 'luar', 'dalam'. Default ke batin. Setiap metode telah dijelaskan di bawah ini
sort − Urutkan hasil DataFrame dengan kunci gabungan dalam urutan leksikografis. Default ke True, pengaturan ke False akan meningkatkan kinerja secara substansial dalam banyak kasus
Mari kita buat dua DataFrames yang berbeda dan melakukan operasi penggabungan di atasnya
# import the pandas library import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame( {'id':[1,2,3,4,5], 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print left print right _Outputnya adalah sebagai berikut −
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 sub5Menggabungkan Dua DataFrame pada Kunci
import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print pd.merge(left,right,on='id')Outputnya adalah sebagai berikut −
Menggabungkan Dua DataFrame pada Beberapa Kunci
import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print pd.merge(left,right,on=['id','subject_id'])Outputnya adalah sebagai berikut −
Name_x id subject_id Name_y 0 Alice 4 sub6 Bryce 1 Ayoung 5 sub5 Betty _Menggabungkan Menggunakan Argumen 'bagaimana'
Argumen how untuk menggabungkan menentukan cara menentukan kunci mana yang akan disertakan dalam tabel yang dihasilkan. Jika kombinasi tombol tidak muncul di tabel kiri atau kanan, nilai di tabel gabungan akan menjadi NA
Berikut adalah ringkasan dari how options dan nama setara SQL mereka −
Gabungkan Metodesetara SQLDeskripsikiriLEFT OUTER JOINGunakan kunci dari objek kirikananRIGHT OUTER JOINGunakan kunci dari objek kananouterFULL OUTER JOINGunakan penyatuan kunci dalamINNER JOINGunakan persimpangan kunciGabung Kiri
import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print pd.merge(left, right, on='subject_id', how='left')Outputnya adalah sebagai berikut −
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 _Gabung Kanan
import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print pd.merge(left, right, on='subject_id', how='right') _Outputnya adalah sebagai berikut −
# import the pandas library import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame( {'id':[1,2,3,4,5], 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print left print right _0Gabung Luar
# import the pandas library import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame( {'id':[1,2,3,4,5], 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print left print right _1Outputnya adalah sebagai berikut −
# import the pandas library import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame( {'id':[1,2,3,4,5], 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print left print right _2Gabungan Dalam
Bergabung akan dilakukan pada index. Bergabung operasi menghormati objek yang disebut. Jadi, sebuah. join(b) tidak sama dengan b. bergabung(a)