Comment comparer des colonnes dans différents blocs de données?
23
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.
Pourriez-vous s'il vous plaît indiquer à quoi vous voulez que le résultat ressemble? Est-ce un df avec des noms apparaissant dans les deux dfs, et si vous avez également besoin d'autre chose comme le nombre ou la colonne correspondante dans df2, etc. Merci!
Vous pouvez joindre en interne les deux blocs de données sur les colonnes qui vous intéressent et vérifier si le nombre de lignes dans le résultat est positif.
dsaxton
Pour info, la comparaison du prénom et du nom de famille sur n'importe quel ensemble de noms décemment gros finira par être douloureuse - beaucoup de gens ont le même nom!
Ken Syme
Réponses:
22
Si vous souhaitez vérifier des valeurs égales sur une certaine colonne, disons Nom, vous pouvez fusionner les deux Dataframes en une nouvelle:
quelle est df.votre réponse? Il y a seulement df1et df2mais pasdf
LearneR
3
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.
Je pense que la question est de comparer les valeurs dans deux colonnes différentes dans des cadres de données différents, car la personne interrogée veut vérifier si une personne dans un bloc de données se trouve dans un autre.
Divyanshu Shekhar
Merci, j'ai mal posé la question. J'ai mis à jour la réponse maintenant.
aathiraks
1
Vous pouvez vérifier le nombre exact de positions communes et différentes entre deux df en utilisant isin et value_counts ()
Notez que les colonnes des trames de données sont des séries de données. Donc, si vous prenez deux colonnes comme séries de pandas, vous pouvez les comparer comme vous le feriez avec des tableaux numpy.
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:
Je pense que c'est plus efficace et plus rapide que
where
si vous avez un grand ensemble de donnéesla source
True
les entrées montrent des éléments communs. Cela révèle également la position des éléments communs, contrairement à la solution avecmerge
.la source
df.
votre réponse? Il y a seulementdf1
etdf2
mais pasdf
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
etdf2
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:
Sortie:
{'c2', 'c3'}
la source
Vous pouvez vérifier le nombre exact de positions communes et différentes entre deux df en utilisant isin et value_counts ()
Comme ça:
Résultat:
Vrai = commun Faux = différent
la source
Notez que les colonnes des trames de données sont des séries de données. Donc, si vous prenez deux colonnes comme séries de pandas, vous pouvez les comparer comme vous le feriez avec des tableaux numpy.
la source