Pandas : supprimer des lignes en fonction de plusieurs conditions
Vous pouvez utiliser les méthodes suivantes pour supprimer des lignes en fonction de plusieurs conditions dans un DataFrame pandas :
Méthode 1 : supprimer les lignes qui répondent à l’une des plusieurs conditions
df = df.loc[~((df['col1'] == 'A') | (df['col2'] > 6))]
Cet exemple particulier supprimera toutes les lignes où la valeur de col1 est égale à A ou la valeur de col2 est supérieure à 6.
Méthode 2 : supprimer les lignes qui remplissent plusieurs conditions
df = df.loc[~((df['col1'] == 'A') & (df['col2'] > 6))]
Cet exemple particulier supprimera toutes les lignes où la valeur de col1 est égale à A et la valeur de col2 est supérieure à 6.
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({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'pos': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'], 'assists': [5, 7, 7, 9, 12, 9, 3, 4], 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]}) #view DataFrame df team pos assists rebounds 0 A G 5 11 1 A G 7 8 2 A F 7 10 3 A F 9 6 4 B G 12 6 5 B G 9 5 6 B F 3 9 7 B F 4 12
Exemple 1 : supprimer les lignes qui répondent à l’une des plusieurs conditions
Le code suivant montre comment supprimer des lignes dans le DataFrame où la valeur dans la colonne équipe est égale à A ou la valeur dans la colonne assistances est supérieure à 6 :
#drop rows where value in team column == 'A' or value in assists column > 6
df = df.loc[~((df['team'] == 'A') | (df['assists'] > 6))]
#view updated DataFrame
print(df)
team pos assists rebounds
6 B F 3 9
7 B F 4 12
Notez que toutes les lignes où la colonne de l’équipe était égale à A ou la colonne des passes décisives était supérieure à 6 ont été supprimées.
Pour ce DataFrame particulier, six des lignes ont été supprimées.
Remarque : Le | le symbole représente la logique « OU » chez les pandas.
Exemple 2 : supprimer les lignes qui remplissent plusieurs conditions
Le code suivant montre comment supprimer des lignes dans le DataFrame où la valeur dans la colonne équipe est égale à A et la valeur dans la colonne assistances est supérieure à 6 :
#drop rows where value in team column == 'A' and value in assists column > 6
df = df.loc[~((df['team'] == 'A') & (df['assists'] > 6))]
#view updated DataFrame
print(df)
team pos assists rebounds
0 A G 5 11
4 B G 12 6
5 B G 9 5
6 B F 3 9
7 B F 4 12
Notez que toutes les lignes où la colonne des équipes était égale à A et la colonne des passes décisives était supérieure à 6 ont été supprimées.
Pour ce DataFrame particulier, trois des lignes ont été supprimées.
Remarque : Le symbole & représente la logique « ET » dans les pandas.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Comment supprimer des lignes contenant une valeur spécifique dans Pandas
Comment supprimer des lignes contenant une chaîne spécifique dans Pandas
Comment supprimer des lignes par index dans Pandas