Trouver la différence entre deux DataFrames
Dans l'analyse des données, l'identification des écarts entre les ensembles de données est cruciale. Supposons que vous ayez deux trames de données, df1 et df2, où df2 est un sous-ensemble de df1. Pour récupérer efficacement les lignes et colonnes uniques présentes dans df1 mais pas dans df2, vous pouvez exploiter le concept de différence définie.
Approche : Utilisation de pd.concat et drop_duplicates**
L'approche principale consiste à combiner les deux trames de données à l'aide de pd.concat et à éliminer ensuite les lignes en double ou des colonnes utilisant drop_duplicates. En définissant keep=False, cela garantit que seules les lignes ou colonnes qui existent uniquement dans df1 sont conservées.
df3 = pd.concat([df1, df2]).drop_duplicates(keep=False)
Attention : gestion des doublons
Cependant, cela La méthode suppose que les deux trames de données elles-mêmes ne contiennent pas de valeurs en double. S’ils le font, le résultat peut être inexact. Pour résoudre ce problème, nous pouvons utiliser les approches alternatives suivantes :
Méthode 1 : Utiliser isin avec Tuple
Cette méthode consiste à convertir chaque ligne en un tuple en utilisant df.apply(tuple, 1) puis en vérifiant si les tuples sont présents dans df2 en utilisant df.apply(tuple, 1).isin(df2.apply(tuple, 1)). La trame de données résultante contiendra les lignes uniques de df1 qui ne sont pas dans df2.
df1[~df1.apply(tuple, 1).isin(df2.apply(tuple, 1))]
Méthode 2 : Fusion avec l'indicateur
Une autre approche consiste à fusionner df1 avec df2 en utilisant pd.merge avec un indicateur pour identifier les lignes qui existent uniquement dans df1. En utilisant la fonction lambda, nous pouvons filtrer les lignes où la colonne « _merge » n'est pas égale à « les deux ».
df1.merge(df2, indicator=True, how='left').loc[lambda x: x['_merge']!='both']
Conclusion
En utilisant ces techniques, vous pouvez trouver efficacement la différence entre deux trames de données et obtenir des informations sur les points de données uniques présents dans chaque trame de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!