[英]Drop rows of a Pandas dataframe if the value of range columns 0
数据框:
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
到结束列和由DataFrame.assign
添加的b
列进行测试,请使用DataFrame.loc
进行选择,通过DataFrame.ne
测试是否不相等,然后如果 aby 值与DataFrame.any
和 last 匹配(这意味着不是全0
)按boolean indexing
过滤:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.