如果某个列中的每个行值都不为零,则过滤DataFrame

时间:2017-11-30 09:03:22

标签: python pandas dataframe

我的熊猫数据框看起来像这样:

'a', 'b', 'c' ,'d', ...., 'z'
-----------------------------
1  , 2  , 3   , 4 , ...., 6
1  , 0  , 3   , 4 , ...., 6
0  , 0  , 0   , 4 , ...., 6

如果我想使用单列过滤,例如a不能为零,我可以这样做

`df = df[df.a != 0]`

但是,如果我需要使用多列进行过滤,例如ab不能为零?

我想要这样的结果:

'a', 'b', 'c' ,'d', ...., 'z'
-----------------------------
1  , 2  , 3   , 4 , ...., 6
1  , 0  , 3   , 4 , ...., 6

1 个答案:

答案 0 :(得分:1)

您可以将带有0的已筛选列与ne(与!=相同)用于新布尔数据框架,然后检查每行至少有一个True { {3}}:

print (df[['a','b']])
   a  b
0  1  2
1  1  0
2  0  0

print (df[['a','b']].ne(0))
       a      b
0   True   True
1   True  False
2  False  False

print (df[['a','b']].ne(0).any(1))
0     True
1     True
2    False
dtype: bool

df = df[df[['a','b']].ne(0).any(1)]
print (df)
   a  b  c  d  z
0  1  2  3  4  6
1  1  0  3  4  6