logo

Jak zkombinovat dva datové rámce v Pythonu – Pandas?

V mnoha situacích reálného života přicházejí data, která chceme použít, ve více souborech. Často potřebujeme tyto soubory sloučit do jednoho DataFrame, abychom mohli data analyzovat. Pandy poskytují takové prostředky pro snadnou kombinaci Series nebo DataFrame s různými druhy logiky množin pro indexy a funkčností relační algebry v případě operací typu spojení / sloučení. Můžeme také kombinovat data z více tabulek pandy . Kromě toho pandy také poskytují nástroje pro porovnání dvou řad nebo DataFrame a shrnutí jejich rozdílů.

Zřetězení datových rámců v Pandas

Funkce concat() v Pandas se používá k připojení sloupců nebo řádků z jednoho DataFrame do druhého. The Funkce Pandas concat(). provádí veškerou těžkou práci při provádění operací zřetězení podél osy při provádění volitelné logiky sady (sjednocení nebo průnik) indexů (pokud existují) na ostatních osách.



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ýstup:

    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>

Spojení DataFrames v Pandas

Když jsme zřetězili naše DataFrames, jednoduše jsme je přidali k sobě, tj. naskládali je buď svisle, nebo vedle sebe. Dalším způsobem, jak kombinovat DataFrames, je použití sloupců v každé datové sadě, které obsahují společné hodnoty (společné jedinečné ID). Kombinování datových rámců pomocí společného pole se nazývá spojování. Sloupce obsahující společné hodnoty se nazývají spojovací klíč(y). Spojení DataFrames tímto způsobem je často užitečné, když jeden DataFrame je vyhledávací tabulka obsahující další data, která chceme zahrnout do druhého.

Poznámka: Tento proces spojování tabulek je podobný tomu, co děláme s tabulkami v SQL databáze .

Při lepení více DataFrame k sobě máte na výběr, jak zacházet s ostatními osami (kromě té, která je zřetězena). To lze provést následujícími dvěma způsoby:

  • Vezměte je spojení všech, připojte se = ‚vnější‘. Toto je výchozí možnost, protože má za následek nulovou ztrátu informací.
  • Jděte na křižovatku, připojte se = ‚vnitřní‘.

Příklad: Vnitřní spojení dvou datových rámců pomocí metody concat().

V tomto příkladu dvě pandy DataFrame,df1>adf3>, jsou zřetězeny pomocí vnitřního spojení na základě jejich indexů. Výsledný DataFrame s názvem ‚výsledek‘ obsahuje pouze řádky, ve kterých je sloupec ‚id‘df1>odpovídá sloupci „Město“ vdf3>.

Python3


porovnávací řetězec java



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ýstup:

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

Zřetězení pomocí funkce append().

Užitečnou zkratkou pro concat() je metoda instance append() na Series a DataFrame. Tuto metodu lze použít ke kombinaci dat z více tabulek v Pandas. Tyto metody ve skutečnosti předcházely konkat.

Příklad 1: Kombinace dvou datových rámců pomocí metody append().

V tomto příkladu dva Pandas DataFrame,df1>adf2>, jsou kombinovány pomocíappend>výsledkem je nový DataFrame s názvem ‚výsledek‘. Výsledný DataFrame obsahuje všechny řádky z oboudf1>adf2>, s průběžným indexem.

sql vybrat z více tabulek

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ýstup:

   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 ke zřetězení vyžadovat více objektů.

Příklad 2: Kombinujte data z více tabulek v Pandas

V tomto příkladu tři Pandas DataFrames,df1>,df2>, adf3>, jsou spojeny pomocíappend>metoda. Výsledný datový rámec s názvem „výsledek“ kombinuje všechny řádky ze tří datových rámců a zachovává souvislý 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ýstup:

   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>