48

这应该非常容易,但我无法让它工作。

我想根据两个或多个值过滤我的数据集。

#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 语句吗?我可以在 SQL 中使用 in?

4

1 回答 1

98

有一种df.isin(values)方法可以测试 中的每个元素是否DataFrame包含在values. 因此,正如@MaxU 在评论中所写,您可以使用

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

按多个值过滤一列。

于 2017-08-21T18:47:24.067 回答