熊猫:使用'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()