Panda's: hoe twee dataframes rij voor rij te vergelijken
U kunt de volgende methoden gebruiken om twee panda’s DataFrames rij voor rij te vergelijken:
Methode 1: DataFrames vergelijken en alleen rijen met verschillen behouden
df_diff = df1. compare (df2, keep_equal= True , align_axis= 0 )
Methode 2: DataFrames vergelijken en alle rijen behouden
df_diff = df1. compare (df2, keep_equal= True , keep_shape= True , align_axis= 0 )
De volgende voorbeelden laten zien hoe u elke methode kunt gebruiken met de volgende panda’s DataFrames:
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
Voorbeeld 1: DataFrames vergelijken en alleen rijen met verschillen behouden
De volgende code laat zien hoe u de twee DataFrames rij voor rij vergelijkt en alleen de rijen behoudt die verschillen hebben in ten minste één kolom:
#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
We kunnen zien dat de DataFrames twee verschillende rijen hebben.
We kunnen met name zien dat de rijen op indexposities 1 en 3 van elk DataFrame verschillende waarden hebben in ten minste één kolom.
De waarden in de zelfregel geven de waarden van het eerste DataFrame weer, terwijl de waarden in de andere regel de waarden van het tweede DataFrame weergeven.
We kunnen bijvoorbeeld zien:
- De rij op indexpositie 1 van het eerste DataFrame bevat B in de teamkolom en 22 in de puntenkolom.
- De rij op indexpositie 1 van het tweede DataFrame bevat B in de teamkolom en 30 in de puntenkolom.
Opmerking : het argument keep_equal=True vertelt panda’s dat ze de waarden gelijk moeten houden. Anders worden gelijke waarden weergegeven als NaN.
Voorbeeld 2: DataFrames vergelijken en alle rijen behouden
De volgende code laat zien hoe u het argument keep_shape=True gebruikt om de twee DataFrames rij voor rij te vergelijken en alle rijen van de oorspronkelijke DataFrames te behouden:
#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
Het resulterende DataFrame bevat alle rijen en kolommen van de oorspronkelijke DataFrames.
Opmerking #1 : De functie Compare() gaat ervan uit dat de twee DataFrames dezelfde afmetingen hebben.
Opmerking #2: Je kunt hier de volledige documentatie voor de pandas Compare()- functie vinden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in panda’s kunt uitvoeren:
Panda’s: hoe twee kolommen te vergelijken
Panda’s: hoe drie kolommen te vergelijken
Panda’s: kolommen in twee verschillende DataFrames vergelijken