Trouver les différences entre deux trames de données
Lorsque vous travaillez avec des trames de données Pandas, il est courant d'avoir des situations où vous devez comparer deux trames de données et extraire les différences entre eux. Par exemple, vous pouvez avoir un bloc de données de base (df1) et un bloc de données de sous-ensemble (df2) et souhaiter créer un nouveau bloc de données (df3) contenant toutes les lignes et colonnes de df1 qui ne sont pas présentes dans df2.
Utiliser drop_duplicates
La méthode la plus directe pour y parvenir est d'utiliser le fonction drop_duplicates. En concaténant df1 et df2, puis en appliquant drop_duplicates au bloc de données concaténé, vous pouvez éliminer les lignes en double et obtenir un bloc de données contenant uniquement des lignes uniques.
pd.concat([df1, df2]).drop_duplicates(keep=False)
Gestion des doublons
Cependant, si df1 ou df2 lui-même contient des lignes en double, l'approche drop_duplicates peut entraîner une sortie erronée. Pour résoudre ce problème, vous pouvez utiliser des méthodes alternatives qui préservent les doublons originaux :
Méthode 1 : Utiliser isin avec tuple
Cette méthode consiste à convertir chaque ligne des blocs de données en un tuple et vérifier si les tuples sont présents dans les deux trames de données. Les lignes qui ne correspondent à aucun tuple dans l'autre bloc de données seront incluses dans le bloc de données de différence.
df1[~df1.apply(tuple, 1).isin(df2.apply(tuple, 1))]
Méthode 2 : Fusionner avec l'indicateur
Un autre L’approche consiste à fusionner df1 et df2 à l’aide d’une colonne indicatrice. En spécifiant how='left' dans la fusion, les lignes de df1 qui n'ont pas de lignes correspondantes dans df2 se verront attribuer une valeur de colonne _merge de left_only. Vous pouvez ensuite filtrer les lignes en fonction de cette colonne d'indicateur pour obtenir le bloc de données de différence.
df1.merge(df2, indicator=True, how='left').loc[lambda x: x['_merge'] != 'both']
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!