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

Ajouter un commentaire

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