Filtrer un DataFrame avec plusieurs conditions est un cas extrêmement courant. Rappel des outils.
df[df['dept'] == 'Tech']
df[df['salaire'] > 50000]& ET
| OU
~ NONParenthèses obligatoires :
df[(df['salaire'] > 50000) & (df['experience'] > 3)] ✅
df[df['salaire'] > 50000 & df['experience'] > 3] ❌ priorité de &
Jamais and / or / not (ce sont des opérateurs sur les booléens, pas sur les Series).
df[df['dept'].isin(['Tech', 'Finance'])] df[df['salaire'].between(40000, 60000)].str.contains('motif') pour les colonnes texte (regex possible)
df[df['email'].str.contains('@beauvoir', na=False)].str.startswith('A')
.str.endswith('.com').isna() / .notna() NaN ou pas
df[df['salaire'].notna()]Alternative parfois plus lisible quand les noms sont simples :
df.query('salaire > 50000 and experience > 3')
df.query('dept in ["Tech", "Finance"]')df = pd.DataFrame({
'employe': ['Alice','Bob','Charlie','Diana','Eve'],
'dept': ['Tech','RH','Tech','Finance','Tech'],
'salaire': [55000, 42000, 62000, 58000, 47000],
'experience':[3, 5, 8, 4, 2]
})tech = df[df['dept'] == 'Tech']
seniors = df[(df['salaire'] > 50000) & (df['experience'] > 3)]
multi = df[df['dept'].isin(['Tech','Finance'])].str.contains et .isin sont les deux méthodes les plus puissantes pour filtrer du texte ou des catégories sans écrire d'expressions à rallonge.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →