Pandas : comment vérifier si plusieurs colonnes sont égales



Vous pouvez utiliser les méthodes suivantes pour vérifier si plusieurs colonnes sont égales dans les pandas :

Méthode 1 : vérifier si toutes les colonnes sont égales

df['matching'] = df.eq(df.iloc[:, 0], axis=0).all(1)

Méthode 2 : vérifier si des colonnes spécifiques sont égales

df['matching'] = df.apply(lambda x: x.col1 == x.col3 == x.col4, axis=1)

Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'A': [4, 0, 3, 3, 6, 8, 7],
                   'B': [4, 2, 3, 5, 6, 4, 7],
                   'C': [4, 0, 3, 3, 5, 10, 7],
                   'D': [4, 0, 3, 3, 3, 8, 7]})

#view DataFrame
print(df)

   A  B   C  D
0  4  4   4  4
1  0  2   0  0
2  3  3   3  3
3  3  5   3  3
4  6  6   5  3
5  8  4  10  8
6  7  7   7  7

Exemple 1 : Vérifiez si toutes les colonnes sont égales

Nous pouvons utiliser la syntaxe suivante pour vérifier si la valeur de chaque colonne du DataFrame est égale pour chaque ligne :

#create new column that checks if all columns match in each row
df['matching'] = df.eq(df.iloc[:, 0], axis=0).all(1)

#view updated DataFrame
print(df)

   A  B   C  D  matching
0  4  4   4  4      True
1  0  2   0  0     False
2  3  3   3  3      True
3  3  5   3  3     False
4  6  6   5  3     False
5  8  4  10  8     False
6  7  7   7  7      True

Si la valeur de chaque colonne est égale, la colonne correspondante renvoie True .

Sinon, il renvoie False .

Notez que vous pouvez convertir les valeurs True et False en 1 et 0 en utilisant astype(int) comme suit :

#create new column that checks if all columns match in each row
df['matching'] = df.eq(df.iloc[:, 0], axis=0).all(1).astype(int)

#view updated DataFrame
print(df)

   A  B   C  D  matching
0  4  4   4  4         1
1  0  2   0  0         0
2  3  3   3  3         1
3  3  5   3  3         0
4  6  6   5  3         0
5  8  4  10  8         0
6  7  7   7  7         1

Exemple 2 : vérifier si des colonnes spécifiques sont égales

Nous pouvons utiliser la syntaxe suivante pour vérifier si les valeurs des colonnes A, C et D du DataFrame sont égales pour chaque ligne :

#create new column that checks if values in columns A, C, and D are equal
df['matching'] = df.apply(lambda x: x.A == x.C == x.D, axis=1)

#view updated DataFrame
print(df)

   A  B   C  D  matching
0  4  4   4  4      True
1  0  2   0  0      True
2  3  3   3  3      True
3  3  5   3  3      True
4  6  6   5  3     False
5  8  4  10  8     False
6  7  7   7  7      True

Si les valeurs des colonnes A, C et D sont égales, la colonne correspondante renvoie True .

Sinon, il renvoie False .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :

Comment renommer des colonnes dans Pandas
Comment ajouter une colonne à un DataFrame Pandas
Comment modifier l’ordre des colonnes dans Pandas DataFrame

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *