Panda's: controleer of een rij uit het ene dataframe in een ander dataframe bestaat


U kunt de volgende syntaxis gebruiken om een nieuwe kolom toe te voegen aan een Panda DataFrame die aangeeft of elke rij in een ander DataFrame bestaat:

 #merge two DataFrames on specific columns
all_df = pd. merge (df1, df2, on=[' column1 ', ' column2 '], how=' left ', indicator=' exists ')

#drop unwanted columns
all_df = all_df. drop (' column3 ', axis= 1 )

#add column that shows if each row in one DataFrame exists in another
all_df[' exists '] = np. where (all_df. exists == ' both ', True , False )

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld: controleer of een rij in het ene Pandas DataFrame bestaat in een ander

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],
                    ' assists ': [4, 7, 7, 10, 12]})

print (df2)

  team points assists
0 to 12 4
1 D 29 7
2 F 15 7
3 G 19 10
4:10:12

We kunnen de volgende syntaxis gebruiken om een kolom met de naam exist toe te voegen aan het eerste DataFrame, die aangeeft of elke waarde in de team- en puntenkolom in elke rij bestaat in het tweede DataFrame:

 import numpy as np

#merge two dataFrames and add indicator column
all_df = pd. merge (df1, df2, on=[' team ', ' points '], how=' left ', indicator=' exists ')

#drop assists columns
all_df = all_df. drop (' assists ', axis= 1 )

#add column to show if each row in first DataFrame exists in second
all_df[' exists '] = np. where (all_df. exists == ' both ', True , False )

#view updated DataFrame
print (all_df)

  team points exists
0 A 12 True
1 B 15 False
2 C 22 False
3 D 29 True
4 E 24 False

De nieuwe kolom bestaat geeft aan of elke waarde in de team- en puntenkolom in elke rij bestaat in het tweede DataFrame.

Uit het resultaat kunnen we zien:

  • Er bestaat een teamwaarde van A en een puntenwaarde van 12 in het tweede DataFrame.
  • Een teamwaarde B en een puntenwaarde van 15 bestaan niet in het tweede DataFrame.
  • Een teamwaarde C en een puntenwaarde van 22 bestaan niet in het tweede DataFrame.
  • Er bestaat een teamwaarde van D en een puntenwaarde van 29 in het tweede DataFrame.
  • Een teamwaarde E en een puntenwaarde van 24 bestaan niet in het tweede DataFrame.

Houd er ook rekening mee dat u in de bestaande kolom andere waarden dan True en False kunt opgeven door de waarden in de functie NumPy Where() te wijzigen.

U kunt in plaats daarvan bijvoorbeeld ‚bestaat‘ en ‚bestaat niet‘ als volgt gebruiken:

 #add column to show if each row in first DataFrame exists in second
all_df[' exists '] = np. where (all_df. exists == ' both ', ' exists ', ' not exists ')

#view updated DataFrame
print (all_df)

  team points exists
0 to 12 exists
1 B 15 not exists
2 C 22 not exists
3 D 29 exists
4 E 24 not exists

Merk op dat de waarden in de bestaande kolom zijn gewijzigd.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in panda’s kunt uitvoeren:

Panda’s: voeg een kolom toe van het ene DataFrame naar het andere
Panda’s: Haal rijen op die zich niet in een ander DataFrame bevinden
Panda’s: hoe controleer je of meerdere kolommen gelijk zijn?

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert