Python 如果范围列的值为0,则删除数据帧的行

Python 如果范围列的值为0,则删除数据帧的行,python,pandas,python-2.7,dataframe,Python,Pandas,Python 2.7,Dataframe,数据帧: df = pd.DataFrame({'a':['NA','W','Q','M'], 'b':[0,0,4,2], 'c':[0,12,0,2], 'd':[22, 3, 34, 12], 'e':[0,0,3,6], 'f':[0,2,0,0], 'h':[0,1,1,0] }) df a b c d e f h 0 NA 0 0 22 0 0 0 1 W 0 12 3 0 2 1 2 Q 4

数据帧:

df = pd.DataFrame({'a':['NA','W','Q','M'], 'b':[0,0,4,2], 'c':[0,12,0,2], 'd':[22, 3, 34, 12], 'e':[0,0,3,6], 'f':[0,2,0,0], 'h':[0,1,1,0] })
df
    a   b   c   d   e   f   h
0   NA  0   0   22  0   0   0
1   W   0   12  3   0   2   1
2   Q   4   0   34  3   0   1
3   M   2   2   12  6   0   0

如果列
b
和所有列
e
的值都包含0,我想删除整行

基本上我想得到这样的东西

a   b   c   d   e   f   h
1   W   0   12  3   0   2   1
2   Q   4   0   34  3   0   1
3   M   2   2   12  6   0   0

如果要测试从
e
到结束列和
b
通过选择添加的列,测试是否不等于,然后测试aby值是否匹配(这意味着没有所有
0
),最后使用以下方法进行筛选:


谢谢但是我想要列
b
和范围
e:to_end\u end
这正是我需要的,它与最新版本完美配合,但不适用于
0.17
。am正在运行
0.17
onprod@Ayalew-对于较旧版本,使用
df=df[df.loc[:,'e':].join(df['b']).ne(0).any(axis=1)]
df = df[df.loc[:, 'e':].assign(b = df['b']).ne(0).any(axis=1)]
print (df)
   a  b   c   d  e  f  h
1  W  0  12   3  0  2  1
2  Q  4   0  34  3  0  1
3  M  2   2  12  6  0  0