logo

Ako skombinovať dva dátové rámce v Pythone – Pandas?

V mnohých reálnych situáciách prichádzajú údaje, ktoré chceme použiť, vo viacerých súboroch. Často musíme tieto súbory skombinovať do jedného DataFrame na analýzu údajov. Pandy poskytujú také prostriedky na jednoduché kombinovanie Series alebo DataFrame s rôznymi druhmi logiky množín pre indexy a funkčnosťou relačnej algebry v prípade operácií typu spájania/zlučovania. Môžeme tiež kombinovať údaje z viacerých tabuliek pandy . Okrem toho pandy poskytujú aj nástroje na porovnanie dvoch sérií alebo dátových rámov a zhrnutie ich rozdielov.

Reťazenie dátových rámcov v Pandách

Funkcia concat() v Pandas sa používa na pripojenie stĺpcov alebo riadkov z jedného DataFrame do druhého. The Funkcia Pandas concat(). robí všetku ťažkú ​​prácu pri vykonávaní operácií zreťazenia pozdĺž osi pri vykonávaní voliteľnej logiky množín (zjednotenie alebo priesečník) indexov (ak existujú) na ostatných osiach.



Python3








import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> frames>=> [df1, df2]> result>=> pd.concat(frames)> display(result)>

>

>

Výkon:

    id Name  0 A01 ABC 1 A02 PQR 2 A03 DEF 3 A04 GHI 0 B05 XYZ 1 B06 TUV 2 B07 MNO 3 B08 JKL>

Spojenie DataFrames v Pandas

Keď sme zreťazili naše DataFrame, jednoducho sme ich pridali k sebe, t. j. poukladali sme ich buď vertikálne, alebo vedľa seba. Ďalším spôsobom, ako kombinovať DataFrames, je použiť stĺpce v každej množine údajov, ktoré obsahujú spoločné hodnoty (spoločné jedinečné ID). Kombinovanie DataFrames pomocou spoločného poľa sa nazýva spájanie. Stĺpce obsahujúce spoločné hodnoty sa nazývajú kľúče spojenia. Spojenie DataFrame týmto spôsobom je často užitočné, keď jeden DataFrame je vyhľadávacia tabuľka obsahujúca ďalšie údaje, ktoré chceme zahrnúť do druhého.

Poznámka: Tento proces spájania tabuliek je podobný tomu, čo robíme s tabuľkami v SQL databáza .

Pri lepení viacerých dátových rámov máte na výber, ako zaobchádzať s ostatnými osami (okrem tej, ktorá sa spája). To možno vykonať nasledujúcimi dvoma spôsobmi:

  • Vezmi spojenie všetkých, spoj=’vonkajší’. Toto je predvolená možnosť, pretože vedie k nulovej strate informácií.
  • Choďte na križovatku, pridajte sa = ‚vnútorné‘.

Príklad: Vnútorné spojenie dvoch dátových rámcov pomocou metódy concat().

V tomto príklade dve pandy DataFrame,df1>adf3>, sú zreťazené pomocou vnútorného spojenia na základe ich indexov. Výsledný dátový rámec s názvom „výsledok“ obsahuje iba riadky, v ktorých je stĺpec „id“.df1>zodpovedá stĺpcu „Mesto“ vdf3>.

Python3


java porovnať reťazec



import> pandas as pd> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> df3>=> pd.DataFrame({>'City'>: [>'MUMBAI'>,>'PUNE'>,>'MUMBAI'>,>'DELHI'>],> >'Age'>: [>'12'>,>'13'>,>'14'>,>'12'>]})> # the default behaviour is join='outer'> # inner join> result>=> pd.concat([df1, df3], axis>=>1>, join>=>'inner'>)> display(result)>

>

>

Výkon:

  id Name City Age  0 A01 ABC MUMBAI 12 1 A02 PQR PUNE 13 2 A03 DEF MUMBAI 14 3 A04 GHI DELHI 12>

Reťazenie pomocou funkcie append().

Užitočnou skratkou pre concat() je metóda inštancie append() na Series a DataFrame. Táto metóda môže byť použitá na kombinovanie údajov z viacerých tabuliek v Pandas. Tieto metódy v skutočnosti predchádzali konkat.

Príklad 1: Spojenie dvoch dátových rámcov pomocou metódy append().

V tomto príklade dva Pandas DataFrame,df1>adf2>, sú kombinované pomocouappend>výsledkom je nový DataFrame s názvom „výsledok“. Výsledný DataFrame obsahuje všetky riadky z obochdf1>adf2>, s priebežným indexom.

zapuzdrenie java

Python3




import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> # append method> result>=> df1.append(df2)> display(result)>

>

>

Výkon:

   id Name  0 A01 ABC 1 A02 PQR 2 A03 DEF 3 A04 GHI 0 B05 XYZ 1 B06 TUV 2 B07 MNO 3 B08 JKL>

Poznámka: append() môže mať na zreťazenie viacero objektov.

Príklad 2: Skombinujte dáta z viacerých tabuliek v Pandas

V tomto príklade tri Pandas DataFrame,df1>,df2>, adf3>, sú spojené pomocouappend>metóda. Výsledný údajový rámec s názvom „výsledok“ kombinuje všetky riadky z troch údajových rámcov, pričom zachováva súvislý index.

Python3




import> pandas as pd> # First DataFrame> df1>=> pd.DataFrame({>'id'>: [>'A01'>,>'A02'>,>'A03'>,>'A04'>],> >'Name'>: [>'ABC'>,>'PQR'>,>'DEF'>,>'GHI'>]})> # Second DataFrame> df2>=> pd.DataFrame({>'id'>: [>'B05'>,>'B06'>,>'B07'>,>'B08'>],> >'Name'>: [>'XYZ'>,>'TUV'>,>'MNO'>,>'JKL'>]})> df3>=> pd.DataFrame({>'City'>: [>'MUMBAI'>,>'PUNE'>,>'MUMBAI'>,>'DELHI'>],> >'Age'>: [>'12'>,>'13'>,>'14'>,>'12'>]})> # appending multiple DataFrame> result>=> df1.append([df2, df3])> display(result)>

>

>

Výkon:

   id Name City Age  0 A01 ABC NaN NaN 1 A02 PQR NaN NaN 2 A03 DEF NaN NaN 3 A04 GHI NaN NaN 0 B05 XYZ NaN NaN 1 B06 TUV NaN NaN 2 B07 MNO NaN NaN 3 B08 JKL NaN NaN 0 NaN NaN MUMBAI 12 1 NaN NaN PUNE 13 2 NaN NaN MUMBAI 14 3 NaN NaN DELHI 12>