Maison > Article > développement back-end > Comment identifier les lignes présentes dans df2 mais absentes dans df1 ?
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 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.
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.
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.
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!