Různé typy spojení v Pandas

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




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

Výstup: