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