2015-06-03 25 views
1

假设我有一个像的Python:在熊猫数据帧消除行基于布尔条件

c1 c2 
0 'ab' 1 
1 'ac' 0 
2 'bd' 0 
3 'fa' 1 
4 'de' 0 

在熊猫一个数据帧,我想让它显示的所有行,C1不包含“A”。我所需的输出是:

c1 c2 
2 'bd' 0 
4 'de' 0 

我第一次尝试是使用df.loc,像这样:

df.loc['a' not in df['c1']] 

对于搜索特定值,df.loc工作正常,但对于搜索基于一个假条件('a'不在df ['c1'])它不。

我知道我可以做相反的事情。我的意思是,我可以返回包含“A”列“C1”中的所有行,通过这个代码:

df.loc[df['c1'].str.contains('a')] 

但我就是想不通优雅/简洁的方式做的其他方式。我怎样才能做到这一点?

回答

3

使用~翻转你的布尔系列:

df.loc[~df['c1'].str.contains('a')] 
+0

作品还没有 “'.loc'” 凝结倍添:'DF [〜DF [ 'C1'] str.contains( 'A')]' – vk1011