删除3个或更多列为0的记录

use*_*463 4 python pandas

我有一个有很多0的数据帧,如下面的df示例.我想删除三列或更多列中包含0的任何行,如下面的示例Resultdf.

下面的脚本将删除所有0的记录

df = df[(df.T != 0).any()]
Run Code Online (Sandbox Code Playgroud)

有没有办法修改它所以它会丢弃全部为0的记录,或者有三个或更多列为0的记录?或者还有另一种方法吗?

打印df:

ind_key prtCnt fldCnt TmCnt bmCnt
1       0      0      0     0
2       2      0      0     3
3       0      1      0     0
4       0      1      1     0
Run Code Online (Sandbox Code Playgroud)

打印Resultdf:

ind_key prtCnt fldCnt TmCnt bmCnt
2       2      0      0     3
4       0      1      1     0
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 6

你可以用sumaxis = 1

df[df.eq(0).sum(1)<3] # eq mean '=='
Out[523]: 
   ind_key  prtCnt  fldCnt  TmCnt  bmCnt
1        2       2       0      0      3
3        4       0       1      1      0
Run Code Online (Sandbox Code Playgroud)