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