logo

Různé typy spojení v Pandas

Modul Pandas obsahuje různé funkce pro provádění různých operací na datových rámcích, jako je spojení, zřetězení, odstranění, přidání atd. V tomto článku budeme diskutovat o různých typech operací spojení, které lze na Pandách provádět. Datový rámec. Existuje pět typů spojení pandy .

  • Vnitřní spojení
  • Levý vnější spoj
  • Pravé vnější spojení
  • Full Outer Join nebo jednoduše Outer Join
  • Indexové připojení

Abychom porozuměli různým typům spojení, nejprve vytvoříme dva DataFrame, jmenovitě A a b .



Datový rámec a:

Python3








pole java

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

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

Typy spojení v Pandas

Tyto dva datové rámce použijeme k pochopení různých typů spojení.

pandy Vnitřní spojení

Vnitřní spojení je nejběžnějším typem spojení, se kterým budete pracovat. Vrací Dataframe pouze s těmi řádky, které mají společné charakteristiky. To je podobné průniku dvou množin.

Vnitřní spojení Pandy

Pří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ýstup:

pandy Připojit se vlevo

S levým vnějším spojením se zobrazí všechny záznamy z prvního datového rámce, bez ohledu na to, zda klíče v prvním datovém rámci lze nalézt ve druhém datovém rámci. Zatímco pro druhý Dataframe se zobrazí pouze záznamy s klíči ve druhém Dataframe, které lze nalézt v prvním Dataframe.

levé spojení Pří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ýstup:

pandy Pravé vnější spojení

Pro pravé spojení se zobrazí všechny záznamy z druhého Dataframe. Zobrazí se však pouze záznamy s klíči v prvním datovém rámci, které lze nalézt v druhém datovém rámci.

Pandas Right Outer Join

Pří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ýstup:

pandy Úplné vnější spojení

Úplné vnější spojení vrátí všechny řádky z levého datového rámce a všechny řádky z pravého datového rámce a porovná řádky, kde je to možné, s NaN jinde. Ale pokud je Dataframe kompletní, pak dostaneme stejný výstup.

Pandas Full Outer Join

Pří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ýstup:

Připojte se k indexu Pandas

Chcete-li sloučit Dataframe na indexech, předejte levý_index a pravý_index argumenty jako True, tj. oba datové rámce jsou sloučeny na index pomocí výchozího vnitřního spojení.

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>

Rozvržení mřížky

>

>

Výstup: