Panda: come confrontare due dataframe riga per riga


È possibile utilizzare i seguenti metodi per confrontare due DataFrames panda riga per riga:

Metodo 1: confronta i frame di dati e mantieni solo le righe con differenze

 df_diff = df1. compare (df2, keep_equal= True , align_axis= 0 )

Metodo 2: confronta i frame di dati e mantieni tutte le righe

 df_diff = df1. compare (df2, keep_equal= True , keep_shape= True , align_axis= 0 )

Gli esempi seguenti mostrano come utilizzare ciascun metodo con i seguenti DataFrames panda:

 import pandas as pd

#create first DataFrame
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D'],
                    ' points ': [18, 22, 19, 14],
                    ' assists ': [5, 7, 7, 9]})

print (df1)

  team points assists
0 to 18 5
1 B 22 7
2 C 19 7
3 D 14 9

#create second DataFrame
df2 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'E'],
                    ' points ': [18, 30, 19, 20],
                    ' assists ': [5, 7, 7, 9]})

print (df2)

  team points assists
0 to 18 5
1 B 30 7
2 C 19 7
3 E 20 9

Esempio 1: confronta DataFrames e mantieni solo le righe con differenze

Il codice seguente mostra come confrontare i due DataFrame riga per riga e mantenere solo le righe che presentano differenze in almeno una colonna:

 #compare DataFrames and only keep rows with differences
df_diff = df1. compare (df2, keep_equal= True , align_axis= 0 )

#view results
print (df_diff)

        team points
1 coil B 22
  other B 30
3 choke D 14
  other E 20

Possiamo vedere che i DataFrames hanno due righe diverse.

In particolare, possiamo vedere che le righe nelle posizioni dell’indice 1 e 3 di ciascun DataFrame hanno valori diversi in almeno una colonna.

I valori nella riga self visualizzano i valori del primo DataFrame mentre i valori nell’altra riga visualizzano i valori del secondo DataFrame.

Ad esempio, possiamo vedere:

  • La riga nella posizione dell’indice 1 del primo DataFrame contiene B nella colonna della squadra e 22 nella colonna dei punti.
  • La riga nella posizione dell’indice 1 del secondo DataFrame contiene B nella colonna della squadra e 30 nella colonna dei punti.

Nota : l’argomento keep_equal=True dice ai panda di mantenere i valori uguali. Altrimenti, i valori uguali vengono visualizzati come NaN.

Esempio 2: confronta DataFrames e mantieni tutte le righe

Il codice seguente mostra come utilizzare l’argomento keep_shape=True per confrontare i due DataFrames riga per riga e mantenere tutte le righe dei DataFrames originali:

 #compare DataFrames and keep all rows
df_diff = df1. compare (df2, keep_equal= True , keep_shape= True , align_axis= 0 )

#view results
print (df_diff)

        team points assists
0 choke A 18 5
  other A 18 5
1 coil B 22 7
  other B 30 7
2 choke C 19 7
  other C 19 7
3 choke D 14 9
  other E 20 9

Il DataFrame risultante contiene tutte le righe e le colonne dei DataFrame originali.

Nota n. 1 : la funzione compare() presuppone che i due DataFrame abbiano le stesse dimensioni.

Nota n. 2: puoi trovare la documentazione completa per la funzione panda compare() qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni nei panda:

Panda: come confrontare due colonne
Panda: come confrontare tre colonne
Panda: come confrontare colonne in due DataFrames diversi

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *