J'ai deux dataframes qui se compose d'une colonne

Df a la colonne: id1

id1 
 1  
 2  
 3
 4
 5 
 6

Df2 a la colonne: id2

id2
 2 
 1
 5
 4

Comme vous pouvez le voir dans df1, il y a des valeurs qui ne sont pas dans df2 ['id2'] 3,6

Y a-t-il un moyen de le trouver en faisant la différence de deux colonnes de dataframe ou de toute autre manière?

Je l'ai essayé en utilisant

df2.isin(df1)

Mais n'obtient que des valeurs booléennes.

Mais je veux les lignes réelles

3
Shubham R 17 janv. 2017 à 08:39

2 réponses

Meilleure réponse

Il existe plusieurs façons de résoudre ce problème, mais les objets d'index Pandas ont une méthode difference qui recherche tous les index manquants dans le deuxième index de l'index appelant.

idx1 = pd.Index(df.id1)
idx2 = pd.Index(df.id2)

idx1.difference(idx2).values

array([3, 6])

Avec isin, vous obtiendrez le même résultat avec ceci:

df[~df.id1.isin(df2.id2)]
10
Ted Petrou 17 janv. 2017 à 05:46

Vous pouvez également utiliser des opérations d'ensemble

list(set(df.id1) - set(df2.id2))

[3, 6]
2
piRSquared 17 janv. 2017 à 06:20