Rôzne typy spojení v Pandas
Modul Pandas obsahuje rôzne funkcie na vykonávanie rôznych operácií na dátových rámcoch, ako je spojenie, zreťazenie, odstránenie, pridanie atď. V tomto článku budeme diskutovať o rôznych typoch operácií spojenia, ktoré je možné vykonať na zariadeniach Pandas. Dataframe. Existuje päť typov spojení pandy .
- Vnútorné spojenie
- Ľavý vonkajší spoj
- Pravé vonkajšie spojenie
- Úplné vonkajšie spojenie alebo jednoducho vonkajšie spojenie
- Indexové pripojenie
Aby sme pochopili rôzne typy spojení, najprv vytvoríme dva DataFrame, a to a a b .
Dátový rámec a:
Python3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # printing the dataframe> a> |
Výkon:
DataFrame b:
Python3
# importing pandas> import> pandas as pd> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # printing the dataframe> b> |
Výkon:
Typy spojení v Pandas
Tieto dva dátové rámce použijeme na pochopenie rôznych typov spojení.
pandy Vnútorné spojenie
Vnútorné spojenie je najbežnejším typom spojenia, s ktorým budete pracovať. Vracia Dataframe iba s tými riadkami, ktoré majú spoločné charakteristiky. Je to podobné ako pri priesečníku dvoch množín.
Príklad:
Python3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # inner join> df> => pd.merge(a, b, on> => 'id'> , how> => 'inner'> )> # display dataframe> df> |
Výkon:
pandy Ľavé pripojenie
Pri ľavom vonkajšom spojení sa zobrazia všetky záznamy z prvého dátového rámca bez ohľadu na to, či kľúče v prvom dátovom rámci možno nájsť v druhom dátovom rámci. Zatiaľ čo pre druhý Dataframe sa zobrazia iba záznamy s kľúčmi v druhom Dataframe, ktoré možno nájsť v prvom Dataframe.
Príklad:
Python3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # left outer join> df> => pd.merge(a, b, on> => 'id'> , how> => 'left'> )> # display dataframe> df> |
Výkon:
pandy Pravé vonkajšie spojenie
Pri správnom spojení sa zobrazia všetky záznamy z druhého dátového rámca. Zobrazia sa však iba záznamy s kľúčmi v prvom Dataframe, ktoré možno nájsť v druhom Dataframe.
Príklad:
Python3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # right outer join> df> => pd.merge(a, b, on> => 'id'> , how> => 'right'> )> # display dataframe> df> |
Výkon:
pandy Úplné vonkajšie spojenie
Úplné vonkajšie spojenie vráti všetky riadky z ľavého dátového rámca a všetky riadky z pravého dátového rámca a podľa možnosti zhoduje riadky s NaN inde. Ale ak je Dataframe kompletný, potom dostaneme rovnaký výstup.
Príklad:
Python3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # full outer join> df> => pd.merge(a, b, on> => 'id'> , how> => 'outer'> )> # display dataframe> df> |
Výkon:
Pripojte sa k indexu Pandas
Ak chcete zlúčiť Dataframe na indexoch, prejdite left_index a pravý_index argumenty ako True, t.j. oba dátové rámce sú zlúčené do indexu pomocou predvoleného vnútorného spojenia.
Python3
# importing pandas> import> pandas as pd> # Creating dataframe a> a> => pd.DataFrame()> # Creating Dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 10> ,> 12> ],> > 'val1'> : [> 'a'> ,> 'b'> ,> 'c'> ,> 'd'> ]}> a> => pd.DataFrame(d)> # Creating dataframe b> b> => pd.DataFrame()> # Creating dictionary> d> => {> 'id'> : [> 1> ,> 2> ,> 9> ,> 8> ],> > 'val1'> : [> 'p'> ,> 'q'> ,> 'r'> ,> 's'> ]}> b> => pd.DataFrame(d)> # index join> df> => pd.merge(a, b, left_index> => True> , right_index> => True> )> # display dataframe> df> |
Výkon: