web-dev-qa-db-fra.com

python pandas loc - filtre la liste des valeurs

Cela devrait être incroyablement facile, mais je ne peux pas le faire fonctionner.

Je souhaite filtrer mon ensemble de données sur deux valeurs ou plus.

#this works, when I filter for one value
df.loc[df['channel'] == 'sale'] 

#if I have to filter, two separate columns, I can do this
df.loc[(df['channel'] == 'sale')&(df['type']=='A')] 

#but what if I want to filter one column by more than one value?
df.loc[df['channel'] == ('sale','fullprice')] 

Devrait-il s'agir d'une instruction OR? Je peux faire quelque chose comme dans SQL en utilisant in?

14
jeangelj

Il existe une méthode df.isin(values) qui teste si chaque élément du DataFrame est contenu dans values. Donc, comme @MaxU l'a écrit dans le commentaire, vous pouvez utiliser

df.loc[df['channel'].isin(['sale','fullprice'])]

filtrer une colonne par plusieurs valeurs.

30
taras