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