logo

Pandy DataFrame.merge()

Pandy łączyć() definiuje się jako proces łączenia dwóch zbiorów danych w jeden i wyrównywania wierszy w oparciu o wspólne atrybuty lub kolumny. Jest to punkt wejścia dla wszystkich standardowych operacji łączenia baz danych pomiędzy obiektami DataFrame:

Składnia:

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

Parametry:

    Prawidłowy: DataFrame lub nazwana seria
    Jest to obiekt, który łączy się z DataFrame.Jak: {'lewy', 'prawy', 'zewnętrzny', 'wewnętrzny'}, domyślny 'wewnętrzny'
    Typ scalania, który ma zostać wykonany.
      lewy:Używa tylko kluczy z lewej ramki, podobnie jak lewe złącze zewnętrzne SQL; zachowaj kluczową kolejność.Prawidłowy:Używa tylko kluczy z prawej ramki, podobnie jak w przypadku prawego sprzężenia zewnętrznego SQL; zachowaj kluczową kolejność.zewnętrzny:Wykorzystano w nim unię kluczy z obu ramek, podobnie do pełnego sprzężenia zewnętrznego SQL; sortuj klucze leksykograficznie.wewnętrzny:Używa przecięcia kluczy z obu ramek, podobnie jak złącze wewnętrzne SQL; zachowaj kolejność lewych klawiszy.
    NA: etykieta lub lista
    Jest to nazwa poziomu kolumny lub indeksu, do której można się przyłączyć. Należy go znaleźć zarówno w lewej, jak i prawej ramce danych. Jeśli opcja ta ma wartość Brak i nie łączy się w indeksach, domyślnie jest to przecięcie kolumn w obu ramkach DataFrame.
    lewy_na: etykieta lub lista lub tablica
    Jest to nazwa kolumny lub poziomu indeksu z lewej ramki DataFrame, której można używać jako klucza. Może to być tablica o długości równej długości ramki DataFrame.tak jest: etykieta lub lista lub tablica
    Jest to nazwa poziomu kolumny lub indeksu z prawej ramki danych, której można używać jako kluczy. Może to być tablica o długości równej długości ramki DataFrame.lewy_indeks: bool, domyślnie Fałsz
    Używa indeksu z lewej ramki danych jako kluczy łączenia, jeśli ma wartość true. W przypadku MultiIndexu (hierarchicznego) wiele kluczy w drugiej ramce DataFrame (albo indeks, albo niektóre kolumny) powinno odpowiadać liczbie poziomów.prawy_indeks: bool, domyślnie Fałsz
    Używa indeksu z prawej ramki danych jako klucza łączenia. Ma takie samo zastosowanie jak left_index.sortować: bool, domyślnie Fałsz
    Jeśli ma wartość True, sortuje klucze łączenia w porządku leksykograficznym w wynikowej ramce DataFrame. W przeciwnym razie kolejność kluczy złączenia zależy od typu złączenia (słowa kluczowego how).przyrostki: krotka (str, str), domyślna ('_x', '_y')
    Przyrostek ma zastosowanie do nakładania się nazw kolumn odpowiednio w lewej i prawej ramce DataFrame. Kolumny używają wartości (False, False), aby zgłosić wyjątek w przypadku nakładania się.Kopiuj: bool, domyślnie True
    Jeśli ma wartość True, zwraca kopię ramki DataFrame.
    W przeciwnym razie może uniknąć kopiowania.wskaźnik: bool lub str, domyślnie False
    Jeśli prawda, dodaje kolumnę do wyjściowej ramki danych „ _łączyć ' z informacją o źródle każdego wiersza. Jeśli jest to ciąg znaków, do wyjściowej ramki DataFrame zostanie dodana kolumna zawierająca informacje o źródle każdego wiersza, a kolumna otrzyma nazwę wartości ciągu znaków. Kolumna informacyjna jest definiowana jako typu kategorycznego i przyjmuje wartość:
      „tylko lewa”dla obserwacji, których klucz scalania pojawia się tylko „po lewej” ramki DataFrame, natomiast„tylko_prawo”jest definiowany dla obserwacji, w których klucz scalający pojawia się tylko po prawej stronie DataFrame,'Zarówno'jeśli klucz scalający obserwacji zostanie znaleziony w obu z nich.
    uprawomocnić: str., opcjonalne
    Jeśli jest określony, sprawdza typ scalania podany poniżej:
    • „one_to_one” lub „1:1”: sprawdza, czy klucze scalające są unikalne zarówno w lewym, jak i prawym zbiorze danych.
    • „one_to_many” lub „1:m”: sprawdza, czy klucze scalania są unikalne tylko w lewym zbiorze danych.
    • „many_to_one” lub „m:1”: sprawdza, czy klucze scalania są unikalne tylko w odpowiednim zbiorze danych.
    • „many_to_many” lub „m:m”: jest dozwolone, ale nie skutkuje sprawdzeniem.

Przykład 1: Połącz dwie ramki danych na kluczu

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

Wyjście

 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 

Przykład 2: Połącz dwie ramki danych na wielu kluczach:

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

Wyjście

 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