Maison >développement back-end >Tutoriel Python >Comment identifier les lignes présentes dans un DataFrame Pandas mais absentes dans un autre ?
Étant donné deux dataframes Pandas (df1 et df2) avec des lignes qui se croisent, la tâche consiste à isoler le lignes dans df1 qui sont absentes dans df2.
Pour résoudre ce problème, nous pouvons effectuer une jointure gauche de df1 à df2, en nous assurant d'éliminer les doublons dans df2 pour garantir que chaque ligne de jointures df1 avec une seule ligne de df2.
df_all = df1.merge(df2.drop_duplicates(), on=['col1', 'col2'], how='left', indicator=True)
Cette jointure gauche crée une colonne supplémentaire _merge indiquant l'origine de chaque rangée.
Pour filtrer les lignes exclusives à df1, nous appliquons une condition booléenne :
df_filtered = df_all[df_all['_merge'] == 'left_only']
Certaines solutions se trompent en vérifiant chaque valeur dans chaque colonne indépendamment plutôt que de considérer la présence par rangée. Par exemple, cette solution :
(~df1.col1.isin(common.col1)) & (~df1.col2.isin(common.col2))
renvoie un résultat incorrect car elle ne parvient pas à capturer la ligne avec les valeurs [3, 10], qui est absente en commun :
0 False 1 False 2 False 3 True 4 True 5 False dtype: bool
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!