logo

Pandas DataFrame.merge()

панди злиття () визначається як процес об’єднання двох наборів даних в один і вирівнювання рядків на основі загальних атрибутів або стовпців. Це точка входу для всіх стандартних операцій з’єднання бази даних між об’єктами DataFrame:

Синтаксис:

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

Параметри:

    праворуч: DataFrame або іменована серія
    Це об’єкт, який зливається з DataFrame.як: {'left', 'right', 'outer', 'inner'}, за умовчанням 'inner'
    Тип злиття, яке буде виконано.
      зліва:Він використовує лише ключі з лівого кадру, подібно до лівого зовнішнього об’єднання SQL; зберегти порядок ключів.праворуч:Він використовує лише ключі з правого кадру, подібно до правого зовнішнього об’єднання SQL; зберегти порядок ключів.зовнішній:Він використовував об’єднання ключів з обох кадрів, подібно до повного зовнішнього з’єднання SQL; сортувати ключі лексикографічно.внутрішній:Він використовує перетин ключів з обох кадрів, подібно до внутрішнього з’єднання SQL; зберегти порядок лівих клавіш.
    на: мітка або список
    Це імена рівня стовпців або індексів, до яких можна приєднатися. Його потрібно знайти як у лівому, так і в правому DataFrames. Якщо on має значення None і не об’єднує індекси, то за замовчуванням буде перетин стовпців в обох DataFrames.
    left_on: мітка, список або масив
    Це назви стовпців або рівнів індексу з лівого DataFrame для використання як ключа. Це може бути масив, довжина якого дорівнює довжині DataFrame.right_on: мітка, список або масив
    Це назви стовпців або рівнів індексів із правого DataFrame для використання як ключів. Це може бути масив, довжина якого дорівнює довжині DataFrame.лівий_індекс: bool, за замовчуванням False
    Він використовує індекс з лівого DataFrame як ключ(и) об’єднання, якщо це істинно. У випадку MultiIndex (ієрархічного), багато ключів в іншому DataFrame (або індекс, або деякі стовпці) мають відповідати кількості рівнів.правий_індекс: bool, за замовчуванням False
    Він використовує індекс із правого DataFrame як ключ об’єднання. Він використовується так само, як і left_index.сортувати: bool, за замовчуванням False
    Якщо True, він сортує ключі об’єднання в лексикографічному порядку в результуючому DataFrame. В іншому випадку порядок ключів об’єднання залежить від типу об’єднання (ключове слово how).суфікси: кортеж (str, str), за замовчуванням ('_x', '_y')
    Це суфікси для застосування, щоб перекривати імена стовпців у лівому та правому DataFrame відповідно. Стовпці використовують значення (False, False), щоб створити виняток у разі накладання.копія: bool, за замовчуванням True
    Якщо True, повертається копія DataFrame.
    В іншому випадку можна уникнути копіювання.індикатор: bool або str, за замовчуванням False
    Якщо True, він додає стовпець для виводу DataFrame ' _merge ' з інформацією про джерело кожного рядка. Якщо це рядок, стовпець з інформацією про джерело кожного рядка буде додано до виводу DataFrame, а стовпець буде названо значенням рядка. Інформаційний стовпець визначається як категорійний тип і приймає значення:
      'left_only'для спостережень, ключ злиття яких відображається лише «зліва» DataFrame, тоді як'right_only'визначається для спостережень, у яких ключ злиття відображається лише «праворуч» DataFrame,'обидва'якщо ключ злиття спостереження знайдено в обох.
    перевірити: str, необов'язковий
    Якщо його вказано, перевіряється тип злиття, наведений нижче:
    • 'one_to_one' або '1:1': перевіряє, чи унікальні ключі злиття в лівому та правому наборах даних.
    • 'one_to_many' або '1:m': перевіряє, чи унікальні ключі злиття лише в лівому наборі даних.
    • 'many_to_one' або 'm:1': перевіряє, чи унікальні ключі злиття лише в потрібному наборі даних.
    • 'many_to_many' або 'm:m': це дозволено, але не призводить до перевірок.

Приклад 1: об’єднання двох DataFrames на ключі

 # import the pandas library import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4], 'Name': ['John', 'Parker', 'Smith', 'Parker'], 'subject_id':['sub1','sub2','sub4','sub6']}) right = pd.DataFrame({ 'id':[1,2,3,4], 'Name': ['William', 'Albert', 'Tony', 'Allen'], 'subject_id':['sub2','sub4','sub3','sub6']}) print (left) print (right) 

Вихід

 id Name subject_id 0 1 John sub1 1 2 Parker sub2 2 3 Smith sub4 3 4 Parker sub6 id Name subject_id 0 1 William sub2 1 2 Albert sub4 2 3 Tony sub3 3 4 Allen sub6 

Приклад 2: об’єднання двох DataFrames на кількох ключах:

 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') 

Вихід

 id Name_x subject_id_x Name_y subject_id_y 0 1 John sub1 William sub2 1 2 Parker sub2 Albert sub4 2 3 Smith sub4 Tony sub3 3 4 Parker sub6 Allen sub6