4
votes

Python - Vérifie si une valeur dans une colonne df1 est présente dans la colonne df2

J'ai deux dataframes,

df1

  ID   Key   Result
1    A        Not Found
2    B        Found
3    C        Found
4    D        Found

df2

ID   Key
1    D
2    C
3    B
4    E

Maintenant, si la clé dans le df1 est trouvé dans df2 alors la nouvelle colonne aura une valeur trouvée sinon introuvable

le df1 avec le dataframe de sortie devient,

ID   Key
1    A
2    B
3    C
4    D

Comment pouvons-nous faire cela en utilisant des Pandas? Ce n'est pas une jointure / concat / fusion par ID.


1 commentaires

Vous voudrez peut-être jeter un œil à .isin pour cela


3 Réponses :


6
votes

Utilisez numpy.where avec isin code > :

df1['Result'] = np.where(df1['Key'].isin(df2['Key']), 'Found', 'Not Found')
print (df1)
   ID Key     Result
0   1   A  Not Found
1   2   B      Found
2   3   C      Found
3   4   D      Found


0 commentaires

1
votes

Une autre solution utilisant merge

import pandas as pd
import numpy as np

res = pd.merge(df1,df2,how="left",left_on="Key",right_on="Key",suffixes=('', '_'))

res["Result"] = np.where(pd.isna(res.ID_),"Not Found","Found")

del res["ID_"]

res

 entrez la description de l'image ici


0 commentaires

1
votes

Une autre façon d'utiliser merge et np.where

df1['Result'] = np.where(pd.merge(df1,df2,        
                           on='key',
                 suffixes=('_x', '_match'), 
                 how='left')['id_match'].fillna('Not Found')!='Not Found','Found','Not Found')


0 commentaires