logo

Pandas DataFrame.merge()

pandy zlúčiť() je definovaný ako proces spojenia dvoch množín údajov do jednej a zarovnanie riadkov na základe spoločných atribútov alebo stĺpcov. Je to vstupný bod pre všetky štandardné operácie spájania databáz medzi objektmi DataFrame:

Syntax:

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

Parametre:

    správny: DataFrame alebo pomenovaná séria
    Je to objekt, ktorý sa spája s DataFrame.ako: {'left', 'right', 'outter', 'inner'}, default 'inner'
    Typ zlúčenia, ktorý sa má vykonať.
      vľavo:Používa iba klávesy z ľavého rámca, podobne ako ľavé vonkajšie spojenie SQL; zachovať poradie kľúčov.správny:Používa iba kľúče z pravého rámca, podobne ako pravé vonkajšie spojenie SQL; zachovať poradie kľúčov.vonkajšie:Použilo spojenie kľúčov z oboch rámcov, podobne ako úplné vonkajšie spojenie SQL; triediť kľúče lexikograficky.vnútorné:Používa priesečník kľúčov z oboch rámcov, podobne ako vnútorné spojenie SQL; zachovať poradie ľavých kláves.
    na: štítok alebo zoznam
    Ide o názvy na úrovni stĺpcov alebo indexov, ku ktorým sa treba pripojiť. Musí sa nachádzať v ľavom aj pravom DataFrame. Ak je zapnuté Žiadne a nezlúči sa s indexmi, potom sa predvolene použije priesečník stĺpcov v oboch DataFrame.
    left_on: štítok alebo zoznam alebo ako pole
    Ide o názvy stĺpcov alebo indexových úrovní z ľavého DataFrame, ktoré sa majú použiť ako kľúč. Môže to byť pole s dĺžkou rovnajúcou sa dĺžke DataFrame.priamo na: štítok alebo zoznam alebo ako pole
    Ide o názvy na úrovni stĺpcov alebo indexov z pravého DataFrame, ktoré sa majú použiť ako kľúče. Môže to byť pole s dĺžkou rovnajúcou sa dĺžke DataFrame.left_index : bool, predvolená hodnota False
    Používa index z ľavého DataFrame ako kľúč(y) spojenia, ak je pravda. V prípade MultiIndex (hierarchický), mnoho kľúčov v inom DataFrame (buď index alebo niektoré stĺpce) by malo zodpovedať počtu úrovní.pravý_index : bool, predvolená hodnota False
    Ako kľúč spojenia používa index z pravého DataFrame. Má rovnaké použitie ako left_index.zoradiť: bool, predvolená hodnota False
    Ak má hodnotu True, zoradí kľúče spojenia v lexikografickom poradí vo výslednom DataFrame. V opačnom prípade poradie kľúčov spojenia závisí od typu spojenia (kľúčové slovo how).prípony: tuple of the (str, str), default ('_x', '_y')
    Prípony použiť na prekrytie názvov stĺpcov v ľavom a pravom DataFrame. Stĺpce používajú hodnoty (False, False) na vyvolanie výnimky pri prekrývaní.kopírovať: bool, predvolená hodnota True
    Ak je True, vráti kópiu DataFrame.
    V opačnom prípade sa môže vyhnúť kópii.indikátor: bool alebo str, predvolená hodnota False
    Ak je pravda, pridá stĺpec do výstupu DataFrame ' _zlúčiť s informáciami o zdroji každého riadku. Ak ide o reťazec, do výstupu DataFrame sa pridá stĺpec s informáciami o zdroji každého riadku a stĺpec bude pomenovaný ako hodnota reťazca. Informačný stĺpec je definovaný ako kategorický typ a má hodnotu:
      'left_only'pre pozorovania, ktorých kľúč zlúčenia sa zobrazuje iba „vľavo“ v dátovom rámci, zatiaľ čo,'right_only'je definovaný pre pozorovania, v ktorých sa zlučovací kľúč objavuje iba „napravo“ od DataFrame,'oboje'ak sa zlučovací kľúč pozorovania nachádza v oboch.
    potvrdiť: str, voliteľné
    Ak je zadaný, skontroluje typ zlúčenia, ktorý je uvedený nižšie:
    • 'one_to_one' alebo '1:1': Kontroluje, či sú zlučovacie kľúče jedinečné v ľavom aj pravom súbore údajov.
    • 'one_to_many' alebo '1:m': Kontroluje, či sú zlučovacie kľúče jedinečné iba v ľavej množine údajov.
    • 'many_to_one' alebo 'm:1': Kontroluje, či sú zlučovacie kľúče jedinečné iba v správnom súbore údajov.
    • 'many_to_many' alebo 'm:m': Je to povolené, ale nevedie to k kontrolám.

Príklad 1: Zlúčte dva dátové rámce na kľúči

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

Výkon

 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 

Príklad 2: Zlúčte dva dátové rámce na viacerých kľúčoch:

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

Výkon

 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