Cara menggabungkan dua baris dengan python

Pandas adalah alat khusus yang memungkinkan kita melakukan manipulasi data yang rumit secara efektif dan efisien. Di dalam panda, kami kebanyakan berurusan dengan kumpulan data dalam bentuk DataFrame. DataFrames adalah struktur data 2 dimensi dalam panda. DataFrames terdiri dari baris, kolom, dan data

Kami diberi DataFrame dengan satu kolom dan kolom ini berisi semua nilai string, kami perlu menggabungkan semua nilai ini dan menjadikannya satu string

String adalah sekelompok karakter, karakter ini dapat terdiri dari semua huruf kecil, huruf besar, dan karakter khusus yang ada pada keyboard sistem komputer. String adalah tipe data dan jumlah karakter dalam string dikenal sebagai panjang string

Untuk tujuan ini, kami akan menggunakan str. join () metode di mana kita dapat melewati pembatas apa pun yang ingin kita pisahkan semua nilai dalam satu string

Anda dapat menggunakan sintaks dasar berikut untuk menggabungkan baris dengan nilai kolom yang sama dalam DataFrame panda.
#define how to aggregate various fields
agg_functions = {'field1': 'first', 'field2': 'sum', 'field': 'sum'}

#create new DataFrame by combining rows with same id values
df_new = df.groupby(df['id']).aggregate(agg_functions)

Contoh berikut menunjukkan cara menggunakan sintaks ini dalam praktik

Contoh. Gabungkan Baris dengan Nilai Kolom yang Sama di Pandas

Misalkan kita memiliki DataFrame panda berikut yang berisi informasi tentang penjualan dan pengembalian yang dilakukan oleh berbagai karyawan di sebuah perusahaan

import pandas as pd

#create dataFrame
df = pd.DataFrame({'id': [101, 101, 102, 103, 103, 103],
                   'employee': ['Dan', 'Dan', 'Rick', 'Ken', 'Ken', 'Ken'],
                   'sales': [4, 1, 3, 2, 5, 3],
                   'returns': [1, 2, 2, 1, 3, 2]})

#view DataFrame
print(df)

    id employee  sales  returns
0  101      Dan      4        1
1  101      Dan      1        2
2  102     Rick      3        2
3  103      Ken      2        1
4  103      Ken      5        3
5  103      Ken      3        2
_

Kita dapat menggunakan sintaks berikut untuk menggabungkan baris yang memiliki nilai yang sama di kolom id dan kemudian menggabungkan kolom yang tersisa

#define how to aggregate various fields
agg_functions = {'employee': 'first', 'sales': 'sum', 'returns': 'sum'}

#create new DataFrame by combining rows with same id values
df_new = df.groupby(df['id']).aggregate(agg_functions)

#view new DataFrame
print(df_new)

    employee  sales  returns
id                          
101      Dan      5        3
102     Rick      3        2
103      Ken     10        6

DataFrame baru menggabungkan semua baris di DataFrame sebelumnya yang memiliki nilai yang sama di kolom id dan kemudian menghitung jumlah nilai di kolom penjualan dan pengembalian

Catatan. Lihat dokumentasi panda untuk daftar lengkap agregasi yang tersedia untuk digunakan dengan fungsi GroupBy()

Salah satu fitur penting yang ditawarkan oleh Pandas adalah operasi penggabungan dan penggabungan dalam memori yang berkinerja tinggi. Jika Anda pernah bekerja dengan database, Anda harus terbiasa dengan jenis interaksi data ini. Antarmuka utama untuk ini adalah fungsi

df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
_0, dan kita akan melihat beberapa contoh cara kerjanya dalam praktik

Demi kenyamanan, kita akan mulai dengan mendefinisikan ulang fungsi

df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
1 dari bagian sebelumnya

Dalam [1]

import pandas as pd
import numpy as np

class display(object):
    """Display HTML representation of multiple objects"""
    template = """<div style="float: left; padding: 10px;">
    <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1}
    </div>"""
    def __init__(self, *args):
        self.args = args
        
    def _repr_html_(self):
        return '\n'.join(self.template.format(a, eval(a)._repr_html_())
                         for a in self.args)
    
    def __repr__(self):
        return '\n\n'.join(a + '\n' + repr(eval(a))
                           for a in self.args)

Aljabar Relasional

Perilaku yang diimplementasikan dalam

df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
_2 adalah bagian dari apa yang dikenal sebagai aljabar relasional, yang merupakan seperangkat aturan formal untuk memanipulasi data relasional, dan membentuk landasan konseptual operasi yang tersedia di sebagian besar database. Kekuatan dari pendekatan aljabar relasional adalah bahwa pendekatan ini mengusulkan beberapa operasi primitif, yang menjadi blok bangunan dari operasi yang lebih rumit pada setiap kumpulan data. Dengan leksikon operasi dasar yang diterapkan secara efisien dalam database atau program lain, berbagai operasi gabungan yang cukup rumit dapat dilakukan

Panda mengimplementasikan beberapa blok penyusun fundamental ini dalam fungsi

df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
2 dan metode
df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
4 terkait dari
df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
5 dan
df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
6s. Seperti yang akan kita lihat, ini memungkinkan Anda menautkan data secara efisien dari berbagai sumber

Kategori Gabungan

Fungsi

df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
_2 mengimplementasikan sejumlah tipe gabungan. gabungan satu-ke-satu, banyak-ke-satu, dan banyak-ke-banyak. Ketiga jenis gabungan diakses melalui panggilan identik ke antarmuka
df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
2; . Di sini kami akan menunjukkan contoh sederhana dari tiga jenis penggabungan, dan membahas opsi terperinci lebih lanjut di bawah

Satu-ke-satu bergabung

Mungkin jenis ekspresi gabungan yang paling sederhana adalah gabungan satu-ke-satu, yang dalam banyak hal sangat mirip dengan rangkaian berdasarkan kolom yang terlihat di Menggabungkan Kumpulan Data. Concat dan Tambahkan. Sebagai contoh konkrit, perhatikan dua

df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
_9 berikut yang memuat informasi tentang beberapa karyawan di sebuah perusahaan

Di [2]

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')

Keluar[2]

df1

employeegroup0BobAccounting1JakeEngineering2LisaEngineering3SueHR

df2

employeehire_date0Lisa20041Bob20082Jake20123Sue2014

Untuk menggabungkan informasi ini menjadi satu

display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
_0, kita dapat menggunakan fungsi
df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
2

Dalam [3]

df3 = pd.merge(df1, df2)
df3

Keluar[3]

employeegrouphire_date0BobAccounting20081JakeEngineering20122LisaEngineering20043SueHR2014

Fungsi

df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
_2 mengenali bahwa setiap
display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
0 memiliki kolom "karyawan", dan secara otomatis bergabung menggunakan kolom ini sebagai kunci. Hasil penggabungan adalah
display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
0 baru yang menggabungkan informasi dari dua input. Perhatikan bahwa urutan entri di setiap kolom tidak perlu dipertahankan. dalam hal ini, urutan kolom "karyawan" berbeda antara
display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
5 dan
display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
6, dan fungsi
df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
2 menjelaskan hal ini dengan benar. Selain itu, perlu diingat bahwa penggabungan secara umum membuang indeks, kecuali dalam kasus khusus penggabungan berdasarkan indeks (lihat kata kunci
display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
8 dan
display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
9, dibahas sebentar lagi)

Banyak-ke-satu bergabung

Gabungan banyak-ke-satu adalah gabungan yang salah satu dari dua kolom kuncinya berisi entri duplikat. Untuk kasus many-to-one,

display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
0 yang dihasilkan akan mempertahankan entri duplikat tersebut sebagaimana mestinya. Perhatikan contoh penggabungan banyak-ke-satu berikut ini

Dalam [4]

df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'],
                    'supervisor': ['Carly', 'Guido', 'Steve']})
display('df3', 'df4', 'pd.merge(df3, df4)')

Keluar[4]

df3

employeegrouphire_date0BobAccounting20081JakeEngineering20122LisaEngineering20043SueHR2014

df4

groupsupervisor0AccountingCarly1EngineeringGuido2HRSteve

pd. gabungkan (df3, df4)

employeegrouphire_datesupervisor0BobAccounting2008Carly1JakeEngineering2012Guido2LisaEngineering2004Guido3SueHR2014Steve

display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
_0 yang dihasilkan memiliki kolom tambahan dengan informasi "pengawas", di mana informasi tersebut diulang di satu atau lebih lokasi seperti yang dipersyaratkan oleh input

Banyak-ke-banyak bergabung

Gabungan banyak-ke-banyak agak membingungkan secara konseptual, namun tetap terdefinisi dengan baik. Jika kolom kunci di larik kiri dan kanan berisi duplikat, maka hasilnya adalah penggabungan banyak-ke-banyak. Ini mungkin paling jelas dengan contoh konkret. Pertimbangkan hal berikut, di mana kita memiliki

display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
0 yang menunjukkan satu atau lebih keterampilan yang terkait dengan kelompok tertentu. Dengan melakukan penggabungan banyak-ke-banyak, kita dapat memulihkan keterampilan yang terkait dengan setiap orang

Dalam [5]

df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")

Keluar[5]

df1

employeegroup0BobAccounting1JakeEngineering2LisaEngineering3SueHR

df5

groupskills0Accountingmath1Accountingspreadsheets2Engineeringcoding3Engineeringlinux4HRspreadsheets5HRorganization

pd. gabungkan (df1, df5)

employeegroupskills0BobAccountingmath1BobAccountingspreadsheets2JakeEngineeringcoding3JakeEngineeringlinux4LisaEngineeringcoding5LisaEngineeringlinux6SueHRspreadsheets7SueHRorganization

Ketiga jenis gabungan ini dapat digunakan dengan alat Pandas lainnya untuk mengimplementasikan beragam fungsi. Namun dalam praktiknya, kumpulan data jarang sebersih yang kami kerjakan di sini. Di bagian berikut, kami akan mempertimbangkan beberapa opsi yang disediakan oleh

df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
2 yang memungkinkan Anda menyesuaikan cara kerja operasi gabungan

Spesifikasi Kunci Gabung

Kami telah melihat perilaku default

df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
2. itu mencari satu atau lebih nama kolom yang cocok di antara dua input, dan menggunakan ini sebagai kuncinya. Namun, seringkali nama kolom tidak cocok dengan baik, dan
df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
2 menyediakan berbagai opsi untuk menangani ini

Kata kunci df3 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'], 'salary': [70000, 80000, 120000, 90000]}) display('df1', 'df3', 'pd.merge(df1, df3, left_on="employee", right_on="name")') _6

Sederhananya, Anda dapat secara eksplisit menentukan nama kolom kunci menggunakan kata kunci

df3 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'salary': [70000, 80000, 120000, 90000]})
display('df1', 'df3', 'pd.merge(df1, df3, left_on="employee", right_on="name")')
6, yang menggunakan nama kolom atau daftar nama kolom

Di [6]

display('df1', 'df2', "pd.merge(df1, df2, on='employee')")

Keluar[6]

df1

employeegroup0BobAccounting1JakeEngineering2LisaEngineering3SueHR

df2

employeehire_date0Lisa20041Bob20082Jake20123Sue2014

pd. gabung(df1, df2, on='karyawan')

employeegrouphire_date0BobAccounting20081JakeEngineering20122LisaEngineering20043SueHR2014

Opsi ini hanya berfungsi jika kiri dan kanan

display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
0s memiliki nama kolom yang ditentukan

df3 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'], 'salary': [70000, 80000, 120000, 90000]}) display('df1', 'df3', 'pd.merge(df1, df3, left_on="employee", right_on="name")') _9 dan pd.merge(df1, df3, left_on="employee", right_on="name").drop('name', axis=1) 0 kata kunci

Terkadang Anda mungkin ingin menggabungkan dua kumpulan data dengan nama kolom yang berbeda; . Dalam hal ini, kita dapat menggunakan kata kunci

df3 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'salary': [70000, 80000, 120000, 90000]})
display('df1', 'df3', 'pd.merge(df1, df3, left_on="employee", right_on="name")')
_9 dan
pd.merge(df1, df3, left_on="employee", right_on="name").drop('name', axis=1)
0 untuk menentukan dua nama kolom

Di [7]

df3 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'salary': [70000, 80000, 120000, 90000]})
display('df1', 'df3', 'pd.merge(df1, df3, left_on="employee", right_on="name")')

Keluar[7]

df1

employeegroup0BobAccounting1JakeEngineering2LisaEngineering3SueHR

df3

namagaji0Bob700001Jake800002Lisa1200003Sue90000

pd. gabungkan(df1, df3, left_on="karyawan", right_on="nama")

employeegroupnamesalary0BobAccountingBob700001JakeEngineeringJake800002LisaEngineeringLisa1200003SueHRSue90000

Hasilnya memiliki kolom redundan yang dapat kita hilangkan jika diinginkan–misalnya, dengan menggunakan metode

pd.merge(df1, df3, left_on="employee", right_on="name").drop('name', axis=1)
3 dari
display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
0s

Di [8]

pd.merge(df1, df3, left_on="employee", right_on="name").drop('name', axis=1)

Keluar[8]

employeegroupsalary0BobAccounting700001JakeEngineering800002LisaEngineering1200003SueHR90000

display('df1', 'df2', "pd.merge(df1, df2, on='employee')") _8 dan display('df1', 'df2', "pd.merge(df1, df2, on='employee')") 9 kata kunci

Terkadang, daripada menggabungkan kolom, Anda malah ingin menggabungkan indeks. Misalnya, data Anda mungkin terlihat seperti ini

Dalam [9]

df1a = df1.set_index('employee')
df2a = df2.set_index('employee')
display('df1a', 'df2a')

Keluar[9]

df1a

groupemployeeBobAccountingJakeEngineeringLisaEngineeringSueHR

df2a

hire_dateemployeeLisa2004Bob2008Jake2012Sue2014

Anda dapat menggunakan indeks sebagai kunci untuk penggabungan dengan menentukan flag

display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
8 dan/atau
display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
9 di
df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
2

Dalam [10]

display('df1a', 'df2a',
        "pd.merge(df1a, df2a, left_index=True, right_index=True)")

Keluar[10]

df1a

groupemployeeBobAccountingJakeEngineeringLisaEngineeringSueHR

df2a

hire_dateemployeeLisa2004Bob2008Jake2012Sue2014

pd. gabungkan(df1a, df2a, indeks_kiri=Benar, indeks_kanan=Benar)

grouphire_dateemployeeLisaEngineering2004BobAccounting2008JakeEngineering2012SueHR2014

Untuk kenyamanan,

display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
0s menerapkan metode
df5 = pd.DataFrame({'group': ['Accounting', 'Accounting',
                              'Engineering', 'Engineering', 'HR', 'HR'],
                    'skills': ['math', 'spreadsheets', 'coding', 'linux',
                               'spreadsheets', 'organization']})
display('df1', 'df5', "pd.merge(df1, df5)")
4, yang melakukan penggabungan yang secara default bergabung pada indeks

Di [11]

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_0

Keluar[11]

df1a

groupemployeeBobAccountingJakeEngineeringLisaEngineeringSueHR

df2a

hire_dateemployeeLisa2004Bob2008Jake2012Sue2014

df1a. bergabung (df2a)

grouphire_dateemployeeBobAccounting2008JakeEngineering2012LisaEngineering2004SueHR2014

Jika Anda ingin menggabungkan indeks dan kolom, Anda dapat menggabungkan

display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
8 dengan
pd.merge(df1, df3, left_on="employee", right_on="name").drop('name', axis=1)
0 atau
df3 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'salary': [70000, 80000, 120000, 90000]})
display('df1', 'df3', 'pd.merge(df1, df3, left_on="employee", right_on="name")')
9 dengan
display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
9 untuk mendapatkan perilaku yang diinginkan

Dalam [12]

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_1

Keluar[12]

df1a

groupemployeeBobAccountingJakeEngineeringLisaEngineeringSueHR

df3

namagaji0Bob700001Jake800002Lisa1200003Sue90000

pd. gabungkan(df1a, df3, left_index=True, right_on='nama')

groupnamesalary0AccountingBob700001EngineeringJake800002EngineeringLisa1200003HRSue90000

Semua opsi ini juga berfungsi dengan banyak indeks dan/atau banyak kolom; . Untuk informasi lebih lanjut tentang ini, lihat bagian "Gabung, Gabung, dan Gabungkan" dari dokumentasi Pandas

Menentukan Set Aritmatika untuk Gabungan

Dalam semua contoh sebelumnya, kami telah membahas satu pertimbangan penting dalam melakukan gabungan. jenis himpunan aritmatika yang digunakan dalam join. Ini muncul ketika sebuah nilai muncul di satu kolom kunci tetapi tidak di kolom lainnya. Pertimbangkan contoh ini

Di [13]

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_2

Keluar[13]

df6

namamakanan0Peterfish1Paulbeans2Marybread

df7

bernamarink0Marywine1Josephbeer

pd. gabungkan (df6, df7)

namefooddrink0Marybreadwine

Di sini kami telah menggabungkan dua kumpulan data yang hanya memiliki satu entri "nama" yang sama. Maria. Secara default, hasilnya berisi persimpangan dari dua set input; . Kami dapat menentukan ini secara eksplisit menggunakan kata kunci

df1a = df1.set_index('employee')
df2a = df2.set_index('employee')
display('df1a', 'df2a')
6, yang defaultnya adalah
df1a = df1.set_index('employee')
df2a = df2.set_index('employee')
display('df1a', 'df2a')
7

Dalam [14]

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_3

Keluar[14]

namefooddrink0Marybreadwine

Pilihan lain untuk kata kunci

df1a = df1.set_index('employee')
df2a = df2.set_index('employee')
display('df1a', 'df2a')
6 adalah
df1a = df1.set_index('employee')
df2a = df2.set_index('employee')
display('df1a', 'df2a')
9,
display('df1a', 'df2a',
        "pd.merge(df1a, df2a, left_index=True, right_index=True)")
0, dan
display('df1a', 'df2a',
        "pd.merge(df1a, df2a, left_index=True, right_index=True)")
1. Gabungan luar mengembalikan gabungan dari gabungan kolom input, dan mengisi semua nilai yang hilang dengan NAS

Dalam [15]

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_4

Keluar[15]

df6

namamakanan0Peterfish1Paulbeans2Marybread

df7

bernamarink0Marywine1Josephbeer

pd. gabungkan(df6, df7, how='luar')

namefooddrink0PeterfishNaN1PaulbeansNaN2Marybreadwine3JosephNaNbeer

Gabung kiri dan gabung kanan kembali bergabung di atas entri kiri dan entri kanan, masing-masing. Sebagai contoh

Dalam [16]

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_5

Keluar[16]

df6

namamakanan0Peterfish1Paulbeans2Marybread

df7

bernamarink0Marywine1Josephbeer

pd. gabung(df6, df7, how='kiri')

namefooddrink0PeterfishNaN1PaulbeansNaN2Marybreadwine

Baris output sekarang sesuai dengan entri di input kiri. Menggunakan

display('df1a', 'df2a',
        "pd.merge(df1a, df2a, left_index=True, right_index=True)")
_2 bekerja dengan cara yang sama

Semua opsi ini dapat diterapkan secara langsung ke salah satu tipe gabungan sebelumnya

Tumpang Tindih Nama Kolom. display('df1a', 'df2a', "pd.merge(df1a, df2a, left_index=True, right_index=True)") _3 Kata Kunci

Akhirnya, Anda mungkin berakhir dalam kasus di mana dua masukan Anda

display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
0s memiliki nama kolom yang bertentangan. Pertimbangkan contoh ini

Dalam [17]

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_6

Keluar[17]

df8

namarank0Bob11Jake22Lisa33Sue4

df9

namarank0Bob31Jake12Lisa43Sue2

pd. gabungkan(df8, df9, pada="nama")

namerank_xrank_y0Bob131Jake212Lisa343Sue42

Karena output akan memiliki dua nama kolom yang bertentangan, fungsi penggabungan secara otomatis menambahkan akhiran

display('df1a', 'df2a',
        "pd.merge(df1a, df2a, left_index=True, right_index=True)")
5 atau
display('df1a', 'df2a',
        "pd.merge(df1a, df2a, left_index=True, right_index=True)")
6 untuk membuat kolom output menjadi unik. Jika default ini tidak sesuai, Anda dapat menentukan akhiran khusus menggunakan kata kunci
display('df1a', 'df2a',
        "pd.merge(df1a, df2a, left_index=True, right_index=True)")
3

Dalam [18]

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_7

Keluar[18]

df8

namarank0Bob11Jake22Lisa33Sue4

df9

namarank0Bob31Jake12Lisa43Sue2

pd. gabungkan(df8, df9, on="nama", akhiran=["_L", "_R"])

namerank_Lrank_R0Bob131Jake212Lisa343Sue42

Sufiks ini berfungsi di salah satu kemungkinan pola gabungan, dan juga berfungsi jika ada beberapa kolom yang tumpang tindih

Untuk informasi lebih lanjut tentang pola ini, lihat Agregasi dan Pengelompokan di mana kita menyelam lebih dalam ke dalam aljabar relasional. Lihat juga dokumentasi "Gabung, Gabung, dan Gabungkan" Panda untuk diskusi lebih lanjut tentang topik ini

Contoh. Data Amerika Serikat

Menggabungkan dan menggabungkan operasi paling sering muncul saat menggabungkan data dari sumber yang berbeda. Di sini kita akan mempertimbangkan contoh beberapa data tentang negara bagian AS dan populasinya. File data dapat ditemukan di http. //github. com/jakevdp/data-USstates/

Dalam [19]

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_8

Mari kita lihat ketiga kumpulan data tersebut, menggunakan fungsi Pandas

display('df1a', 'df2a',
        "pd.merge(df1a, df2a, left_index=True, right_index=True)")
8

Dalam [20]

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_9

Keluar[20]

pop. kepala()

state/regionagesyearpopulation0ALunder1820121117489. 01ALtotal20124817528. 02ALunder1820101130966. 03ALtotal20104785570. 04ALunder1820111125763. 0

daerah. kepala()

wilayah negara bagian (q. mi)0Alabama524231Alaska6564252Arizona1140063Arkansas531824California163707

singkatan. kepala()

stateabbreviation0AlabamaAL1AlaskaAK2ArizonaAZ3ArkansasAR4CaliforniaCA

Dengan informasi ini, katakanlah kita ingin menghitung hasil yang relatif mudah. peringkat negara bagian dan teritori AS berdasarkan kepadatan populasi 2010 mereka. Kami jelas memiliki data di sini untuk menemukan hasil ini, tetapi kami harus menggabungkan kumpulan data untuk menemukan hasilnya

Kita akan mulai dengan penggabungan many-to-one yang akan memberi kita nama negara bagian lengkap dalam populasi

display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
0. Kami ingin menggabungkan berdasarkan kolom
df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_00 dari
df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
01, dan kolom
df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
02 dari
df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
03. Kami akan menggunakan
df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_04 untuk memastikan tidak ada data yang dibuang karena label yang tidak cocok

Dalam [21]

df3 = pd.merge(df1, df2)
df3
0

Keluar[21]

state/regionagesyearpopulationstate0ALunder1820121117489. 0Alabama1ALtotal20124817528. 0Alabama2ALunder1820101130966. 0Alabama3ALtotal20104785570. 0Alabama4ALunder1820111125763. 0Alabama

Mari periksa kembali apakah ada ketidaksesuaian di sini, yang dapat kita lakukan dengan mencari baris dengan nol

Di [22]

df3 = pd.merge(df1, df2)
df3
1

Keluar[22]

df3 = pd.merge(df1, df2)
df3
2

Beberapa info

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_05 adalah null;

Dalam [23]

df3 = pd.merge(df1, df2)
df3
3

Keluar[23]

state/regionagesyearpopulationstate2448PRunder181990NaNNaN2449PRtotal1990NaNNaN2450PRtotal1991NaNNaN2451PRunder181991NaNNaN2452PRtotal1993NaNNaN

Tampaknya semua nilai populasi nol berasal dari Puerto Rico sebelum tahun 2000;

Lebih penting lagi, kami juga melihat bahwa beberapa entri

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
06 baru juga nol, yang berarti tidak ada entri yang sesuai di kunci
df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
03. Mari cari tahu wilayah mana yang tidak memiliki kecocokan ini

Di [24]

df3 = pd.merge(df1, df2)
df3
_4

Keluar[24]

df3 = pd.merge(df1, df2)
df3
5

Kami dapat dengan cepat menyimpulkan masalahnya. data populasi kami mencakup entri untuk Puerto Riko (PR) dan Amerika Serikat secara keseluruhan (AS), sedangkan entri ini tidak muncul di kunci singkatan negara bagian. Kami dapat memperbaikinya dengan cepat dengan mengisi entri yang sesuai

Dalam [25]

df3 = pd.merge(df1, df2)
df3
6

Keluar[25]

df3 = pd.merge(df1, df2)
df3
7

Tidak ada lagi null di kolom

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_06. kita sudah siap

Sekarang kita dapat menggabungkan hasilnya dengan data area menggunakan prosedur serupa. Memeriksa hasil kami, kami ingin bergabung di kolom

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
06 di keduanya

Dalam [26]

df3 = pd.merge(df1, df2)
df3
8

Keluar[26]

negara bagian/daerahtahunpopulasinegaradaerah(sq. mi)0ALdibawah1820121117489. 0Alabama52423. 01ALtotal20124817528. 0Alabama52423. 02ALunder1820101130966. 0Alabama52423. 03ALtotal20104785570. 0Alabama52423. 04ALunder1820111125763. 0Alabama52423. 0

Sekali lagi, mari kita periksa nol untuk melihat apakah ada ketidakcocokan

Dalam [27]

df3 = pd.merge(df1, df2)
df3
_9

Keluar[27]

df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'],
                    'supervisor': ['Carly', 'Guido', 'Steve']})
display('df3', 'df4', 'pd.merge(df3, df4)')
_0

Ada nol di kolom

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_10;

Di [28]

df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'],
                    'supervisor': ['Carly', 'Guido', 'Steve']})
display('df3', 'df4', 'pd.merge(df3, df4)')
_1

Keluar[28]

df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'],
                    'supervisor': ['Carly', 'Guido', 'Steve']})
display('df3', 'df4', 'pd.merge(df3, df4)')
_2

Kami melihat bahwa

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
11
display('df1', 'df2', "pd.merge(df1, df2, on='employee')")
0 kami tidak mencakup wilayah Amerika Serikat secara keseluruhan. Kita dapat memasukkan nilai yang sesuai (menggunakan jumlah semua wilayah negara bagian, misalnya), tetapi dalam kasus ini kita hanya membuang nilai nol karena kepadatan penduduk seluruh Amerika Serikat tidak relevan dengan pembahasan kita saat ini.

Dalam [29]

df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'],
                    'supervisor': ['Carly', 'Guido', 'Steve']})
display('df3', 'df4', 'pd.merge(df3, df4)')
_3

Keluar[29]

negara bagian/daerahtahunpopulasinegaradaerah(sq. mi)0ALdibawah1820121117489. 0Alabama52423. 01ALtotal20124817528. 0Alabama52423. 02ALunder1820101130966. 0Alabama52423. 03ALtotal20104785570. 0Alabama52423. 04ALunder1820111125763. 0Alabama52423. 0

Sekarang kami memiliki semua data yang kami butuhkan. Untuk menjawab pertanyaan yang menarik, pertama-tama mari kita pilih bagian dari data yang sesuai dengan tahun 2000, dan total populasi. Kami akan menggunakan fungsi

df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
13 untuk melakukan ini dengan cepat (ini membutuhkan paket
df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
14 untuk diinstal; lihat Panda Berkinerja Tinggi.
df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
_15 dan
df1 = pd.DataFrame({'employee': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
df2 = pd.DataFrame({'employee': ['Lisa', 'Bob', 'Jake', 'Sue'],
                    'hire_date': [2004, 2008, 2012, 2014]})
display('df1', 'df2')
13)

Dalam [30]

df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'],
                    'supervisor': ['Carly', 'Guido', 'Steve']})
display('df3', 'df4', 'pd.merge(df3, df4)')
_4

Keluar[30]

negara bagian/daerahtahunpopulasinegaradaerah(sq. mi)3ALtotal20104785570. 0Alabama52423. 091AKtotal2010713868. 0Alaska656425. 0101AZtotal20106408790. 0Arizona114006. 0189ARTtotal20102922280. 0Arkansas53182. 0197CAtotal201037333601. 0California163707. 0

Sekarang mari menghitung kepadatan populasi dan menampilkannya secara berurutan. Kami akan mulai dengan mengindeks ulang data kami di negara bagian, dan kemudian menghitung hasilnya

Dalam [31]

df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'],
                    'supervisor': ['Carly', 'Guido', 'Steve']})
display('df3', 'df4', 'pd.merge(df3, df4)')
_5

Dalam [32]

df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'],
                    'supervisor': ['Carly', 'Guido', 'Steve']})
display('df3', 'df4', 'pd.merge(df3, df4)')
_6

Keluar[32]

df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'],
                    'supervisor': ['Carly', 'Guido', 'Steve']})
display('df3', 'df4', 'pd.merge(df3, df4)')
_7

Hasilnya adalah peringkat negara bagian AS ditambah Washington, DC, dan Puerto Rico dalam urutan kepadatan penduduk tahun 2010, dalam jumlah penduduk per mil persegi. Kita dapat melihat bahwa sejauh ini wilayah terpadat dalam kumpulan data ini adalah Washington, DC (i. e. , Distrik Columbia);

Kami juga dapat memeriksa akhir daftar

Dalam [33]

df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'],
                    'supervisor': ['Carly', 'Guido', 'Steve']})
display('df3', 'df4', 'pd.merge(df3, df4)')
_8

Keluar[33]

df4 = pd.DataFrame({'group': ['Accounting', 'Engineering', 'HR'],
                    'supervisor': ['Carly', 'Guido', 'Steve']})
display('df3', 'df4', 'pd.merge(df3, df4)')
_9

Kami melihat bahwa negara bagian yang paling tidak padat, sejauh ini, adalah Alaska, dengan rata-rata lebih dari satu penduduk per mil persegi

Jenis penggabungan data yang berantakan ini adalah tugas umum saat mencoba menjawab pertanyaan menggunakan sumber data dunia nyata. Saya harap contoh ini memberi Anda gambaran tentang cara menggabungkan alat yang telah kami bahas untuk mendapatkan wawasan dari data Anda

Bagaimana cara menggabungkan dua baris dengan Python?

Fungsi concat() di panda digunakan untuk menambahkan kolom atau baris dari satu DataFrame ke DataFrame lainnya . Fungsi concat () melakukan semua pekerjaan berat dalam melakukan operasi penggabungan sepanjang sumbu sambil melakukan logika set opsional (gabungan atau persimpangan) dari indeks (jika ada) pada sumbu lainnya.

Bagaimana cara menggabungkan dua baris di panda Python?

merge() untuk menggabungkan data pada kolom atau indeks umum. . join() untuk menggabungkan data pada kolom kunci atau indeks. concat() untuk menggabungkan DataFrames di seluruh baris atau kolom.

Bagaimana Anda menggabungkan baris dalam DataFrame dengan Python?

Fungsi concat() dapat digunakan untuk menggabungkan dua Dataframe dengan menambahkan baris dari satu ke yang lain . Fungsi merge() setara dengan klausa SQL JOIN. gabungan 'kiri', 'kanan' dan 'dalam' semuanya dimungkinkan.

Apa itu gabungan () dengan Python?

Metode penggabungan() memperbarui konten dua DataFrame dengan menggabungkan keduanya , menggunakan metode yang ditentukan.