Comment filtrer les lignes d'une dataframe à l'aide d'une instruction OR avec pandas ?

Published: 14 septembre 2022

Tags: Python; Pandas; DataFrame;

DMCA.com Protection Status

Exemples de comment filtrer les lignes d'une dataframe à l'aide d'une instruction OR avec pandas ?

Créer une dataframe avec des pandas

Commençons par créer un dataframe avec pandas à l'aide d'un dictionnaire :

import pandas as pd
import numpy as np

data= {'A':[-1,-2,3,4,5],
       'B':[6,-7,8,9,-10],
       'C':[11,12,13,14,15],}

df = pd.DataFrame(data)

donne ici

   A   B   C
0 -1   6  11
1 -2  -7  12
2  3   8  13
3  4   9  14
4  5 -10  15

Filtrer en utilisant une colonne

Pour filtrer une dataframe avec une instruction OR, une solution consiste à utiliser l'opérateur logique |

df[ (df['A'] < 0) | (df['A'] > 4) ]

donne ici

   A   B   C
0 -1   6  11
1 -2  -7  12
4  5 -10  15

Filtrer en utilisant deux colonnes différentes

Un autre exemple utilisant deux colonnes différentes

df[ (df['A'] < 0) | (df['B'] < 0) ]

donne

   A   B   C
0 -1   6  11
1 -2  -7  12
4  5 -10  15

Plus de deux colonnes

Un autre exemple utilisant plus de deux colonnes différentes

df[ (df['A'] < 0) | (df['B'] < 0) | (df['C'] >= 14) ]

donne

   A   B   C
0 -1   6  11
1 -2  -7  12
3  4   9  14
4  5 -10  15

Conditions multiples avec OU et ET

df[  (df['A'] < 0) | (df['B'] < 0)  & (df['C'] == 11) ]

donne

     A  B   C
0 -1  6  11
1 -2 -7  12

Pareil que

df[  (df['A'] < 0) | ( (df['B'] < 0)  & (df['C'] == 11) )  ]

donne

     A  B   C
0 -1  6  11
1 -2 -7  12

ou

cond1 = (df['A'] < 0)
cond2 = (df['B'] < 0)  & (df['C'] == 11)

df[ cond1 | cond2 ]

donne

     A  B   C
0 -1  6  11
1 -2 -7  12

Références