Panda's: haal rijen op die zich niet in een ander dataframe bevinden
U kunt de volgende basissyntaxis gebruiken om rijen op te halen uit een Panda DataFrame die zich niet in een ander DataFrame bevinden:
#merge two DataFrames and create indicator column df_all = df1. merge ( df2.drop_duplicates (), on=[' col1 ',' col2 '], how=' left ', indicator= True ) #create DataFrame with rows that exist in first DataFrame only df1_only = df_all[df_all[' _merge '] == ' left_only ']
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: rijen in een Pandas DataFrame ophalen die zich niet in een ander DataFrame bevinden
Laten we aannemen dat we de volgende twee panda-dataframes hebben:
import pandas as pd #create first DataFrame df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'], ' points ': [12, 15, 22, 29, 24]}) print (df1) team points 0 to 12 1 B 15 2 C 22 3 D 29 4 E 24 #create second DataFrame df2 = pd. DataFrame ({' team ': ['A', 'D', 'F', 'G', 'H'], ' points ': [12, 29, 15, 19, 10]}) print (df2) team points 0 to 12 1 D 29 2 F 15 3 G 19 4:10 a.m.
We kunnen de volgende syntaxis gebruiken om de twee DataFrames samen te voegen en een indicatorkolom te maken om aan te geven welke rijen tot elk DataFrame behoren:
#merge two DataFrames and create indicator column df_all = df1. merge ( df2.drop_duplicates (), on=[' team ',' points '], how=' left ', indicator= True ) #view result print (df_all)
We kunnen dan de volgende syntaxis gebruiken om alleen de rijen uit het eerste DataFrame op te halen die zich niet in het tweede DataFrame bevinden:
#create DataFrame with rows that exist in first DataFrame only df1_only = df_all[df_all[' _merge '] == ' left_only '] #view DataFrame print (df1_only) team points _merge 1 B 15 left_only 2 C 22 left_only 4 E 24 left_only
Ten slotte kunnen we de kolom _merge verwijderen als we dat willen:
#drop '_merge' column
df1_only = df1_only. drop (' _merge ', axis= 1 )
#view DataFrame
print (df1_only)
team points
1 B 15
2 C 22
4 E 24
Het resultaat is een DataFrame waarin alle rijen in het eerste DataFrame voorkomen, maar niet in het tweede DataFrame.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in panda’s kunt uitvoeren:
Hoe u een kolom van het ene DataFrame aan het andere toevoegt in Pandas
Hoe u de kolomvolgorde in Pandas kunt wijzigen
Hoe kolommen op naam te sorteren in Pandas