Diversi tipi di join nei Panda

Diversi tipi di join nei Panda

Il modulo Pandas contiene varie funzionalità per eseguire varie operazioni su Dataframe come unire, concatenare, eliminare, aggiungere, ecc. In questo articolo discuteremo i vari tipi di operazioni di unione che possono essere eseguite su Pandas Dataframe. Sono disponibili cinque tipi di join Panda .

  • Unione interna
  • Unione esterna sinistra
  • Giunzione esterna destra
  • Full Outer Join o semplicemente Outer Join
  • Indice Unisciti

Per comprendere i diversi tipi di join, creeremo prima due DataFrames, vale a dire UN E B .

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

Produzione:

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>

Produzione:

Tipi di join nei panda

Utilizzeremo questi due Dataframe per comprendere i diversi tipi di join.

Panda Unione interna

Il join interno è il tipo di join più comune con cui lavorerai. Restituisce un Dataframe con solo le righe che hanno caratteristiche comuni. Questo è simile all'intersezione di due insiemi.

Unione interna dei panda

Esempio:

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>

Produzione:

Panda Partecipa a sinistra

Con un left external join, verranno visualizzati tutti i record del primo Dataframe, indipendentemente dal fatto che le chiavi del primo Dataframe possano essere trovate nel secondo Dataframe. Per il secondo Dataframe, invece, verranno visualizzati solo i record con le chiavi del secondo Dataframe che si trovano nel primo Dataframe.

unione a sinistra Esempio:

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>

Produzione:

Panda Giunzione esterna destra

Per un'unione a destra, verranno visualizzati tutti i record del secondo Dataframe. Tuttavia, verranno visualizzati solo i record con le chiavi nel primo Dataframe che possono essere trovati nel secondo Dataframe.

I panda si uniscono all

Esempio:

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>

Produzione:

Panda Join esterno completo

Un full external join restituisce tutte le righe del Dataframe sinistro e tutte le righe del Dataframe destro e abbina le righe, ove possibile, con NaN altrove. Ma se il Dataframe è completo, otteniamo lo stesso output.

Unione esterna completa dei panda

Esempio:

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>

Produzione:

Partecipa all'indice dei panda

Per unire il Dataframe sugli indici passare il file indice_sinistra E indice_destro argomenti come True, ovvero entrambi i Dataframe vengono uniti su un indice utilizzando l'Inner Join predefinito.

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>

Produzione: