Je voudrais comparer une colonne d'un df avec d'autres df. Les colonnes sont des noms et des noms de famille. Je voudrais vérifier si une personne dans une trame de données se trouve dans une autre.
Je voudrais comparer une colonne d'un df avec d'autres df. Les colonnes sont des noms et des noms de famille. Je voudrais vérifier si une personne dans une trame de données se trouve dans une autre.
Réponses:
Si vous souhaitez vérifier des valeurs égales sur une certaine colonne, disons Nom, vous pouvez fusionner les deux Dataframes en une nouvelle:
mergedStuff = pd.merge(df1, df2, on=['Name'], how='inner')
mergedStuff.head()
Je pense que c'est plus efficace et plus rapide que where
si vous avez un grand ensemble de données
Comparaison de valeurs dans deux colonnes différentes
En utilisant set, obtenez des valeurs uniques dans chaque colonne. L'intersection de ces deux ensembles fournira les valeurs uniques dans les deux colonnes.
Exemple:
df1 = pd.DataFrame({'c1': [1, 4, 7], 'c2': [2, 5, 1], 'c3': [3, 1, 1]})
df2 = pd.DataFrame({'c4': [1, 4, 7], 'c2': [3, 5, 2], 'c3': [3, 7, 5]})
set(df1['c2']).intersection(set(df2['c2']))
Sortie:
{2, 5}
Comparaison des noms de colonne de deux trames de données
Dans le cas où vous essayez de comparer les noms de colonnes de deux trames de données:
Si df1
et df2
sont les deux trames de données:
set(df1.columns).intersection(set(df2.columns))
Cela fournira les noms de colonnes uniques qui sont contenus dans les deux cadres de données.
Exemple:
df1 = pd.DataFrame({'c1': [1, 4, 7], 'c2': [2, 5, 1], 'c3': [3, 1, 1]})
df2 = pd.DataFrame({'c4': [1, 4, 7], 'c2': [3, 5, 2], 'c3': [3, 7, 5]})
set(df1.columns).intersection(set(df2.columns))
Sortie:
{'c2', 'c3'}