熊猫:使用'item in list'语法的布尔索引

问题描述:

假设我有一个名为col1的列的DataFrame。如果我想获得的所有行COL1 ==“一”,我可以做到这一点:熊猫:使用'item in list'语法的布尔索引

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 
使用 isin()