Python 熊猫:布尔索引与';列表中的项目';语法

Python 熊猫:布尔索引与';列表中的项目';语法,python,pandas,Python,Pandas,假设我有一个数据框,其中有一列名为col1。如果我想得到col1=='a'的所有行,我可以使用以下方法: df[df.col1 == ‘a’] 如果我想要col1为“a”或“b”的行,我可以执行以下操作: df[(df.col1 == ‘a’) | (df.col1 == ‘b’)] 但我真的很想做这样的事情(语法上是非法的): df[df.col1 in [‘a’, ‘b’, ‘c’]] 有没有合适的方法 以下是我正在使用的: sort_func = lambda x: x in [‘a

假设我有一个数据框,其中有一列名为col1。如果我想得到col1=='a'的所有行,我可以使用以下方法:

df[df.col1 == ‘a’]
如果我想要col1为“a”或“b”的行,我可以执行以下操作:

df[(df.col1 == ‘a’) | (df.col1 == ‘b’)]
但我真的很想做这样的事情(语法上是非法的):

df[df.col1 in [‘a’, ‘b’, ‘c’]]
有没有合适的方法

以下是我正在使用的:

sort_func = lambda x: x in [‘a’, ‘b’, ‘c’]
mask = df[‘col1’].apply(sort_func)
df[mask]
但是…有没有更好的方法?这让我很烦恼

用于过滤

In [212]: df = pd.DataFrame([['a', 1], ['b', 2], ['c', 3], ['d', 4]],
                            columns=['col1', 'col2'])


In [213]: df['col1'].isin(['a', 'b', 'c'])
Out[213]:
0     True
1     True
2     True
3    False
Name: col1, dtype: bool

In [214]: df.ix[df['col1'].isin(['a', 'b', 'c']), :]
Out[214]:
  col1  col2
0    a     1
1    b     2
2    c     3