2015-10-26 50 views
0

假設我有一個名爲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] 

但是...有沒有更好的方式來做到這一點?這讓我很困擾。

回答

2

用於過濾

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()