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.
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.
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.
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.
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: