Maison  >  Article  >  développement back-end  >  Comment identifier les lignes présentes dans df2 mais absentes dans df1 ?

Comment identifier les lignes présentes dans df2 mais absentes dans df1 ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-19 21:08:29459parcourir

How to Identify Rows Present in df2 But Absent in df1?

Différences entre deux DataFrames

Comparer les dataframes pour identifier les différences est essentiel pour l'analyse des données. Dans ce problème, nous recevons deux dataframes, df1 et df2, et devons trouver les lignes présentes dans df2 mais absentes dans df1.

Comparaison avec la matrice booléenne

Comparaison directe à l'aide d'opérateurs comme != peut conduire à des erreurs si les trames de données ont des structures différentes. Une meilleure approche consiste à concaténer les trames de données, à réinitialiser leurs indices, puis à les comparer. L'utilisation de df1 == df2 entraînera une matrice booléenne où True indique les lignes présentes dans les deux trames de données et False indique les différences.

Regroupement par valeurs uniques

Ensuite, nous pouvons effectuer une opération de regroupement sur la trame de données concaténée pour identifier les lignes uniques. L'objectif est de trouver des lignes qui n'apparaissent qu'une seule fois dans la trame de données. Nous pouvons y parvenir en vérifiant la longueur des groupes ; les lignes d'une longueur de 1 représentent des enregistrements uniques.

Filtrage du Dataframe

Enfin, nous pouvons utiliser les indices de lignes uniques identifiés pour filtrer le dataframe. Cela nous fournira les lignes de df2 qui ne sont pas présentes dans df1.

Exemple

Par exemple, en considérant les exemples de dataframes fournis :

<code class="python">import pandas as pd

df1 = ...
df2 = ...

# Concatenate dataframes
df = pd.concat([df1, df2])
df = df.reset_index(drop=True)

# Group by unique values
df_gpby = df.groupby(list(df.columns))

# Get unique row indices
idx = [x[0] for x in df_gpby.groups.values() if len(x) == 1]

# Filter dataframe
result = df.reindex(idx)</code>

Le dataframe résultat contiendra les lignes de df2 qui ne sont pas présentes dans df1.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn