web-dev-qa-db-ja.com

python pandas loc-値リストのフィルター

これは信じられないほど簡単なはずですが、動作させることはできません。

2つ以上の値でデータセットをフィルタリングしたい。

#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')] 

これはORステートメントである必要がありますか?inを使用してSQLのようにできますか?

14
jeangelj

DataFrameの各要素がvaluesに含まれているかどうかをテストする df.isin(values) メソッドがあります。したがって、@ MaxUがコメントで書いたように、次を使用できます。

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

1つの列を複数の値でフィルタリングします。

30
taras