我有一个包含4列字符串的数据框,其他的是整数。现在我需要找出那些列中至少有一列是非零值(或> 0)的数据行。
manwra,sahAyaH,T7,0,0,0,0,T
manwra, akriti,T5,0,0,1,0,K
awma, prabrtih,B6, 0,1,1,0,S
我的输出应该是
manwra, akriti,T5,0,0,1,0,K
awma, prabrtih,B6, 0,1,1,0,S
我尝试过以下方法来获得答案。字符串值以列0,1,2和-1(最后一列)为单位。
KT[KT.ix[:,3:-2] != 0]
我收到的是输出
NaN,NaNNaN,NaN,NaN,NaN,NaN,NaN
NaN,NaN,NaN,NaN,NaN,1,NaN,NaN
NaN,NaN,NaN,NaN,1,1,NaN,NaN
如何获得所需的输出
答案 0 :(得分:6)
答案 1 :(得分:6)
以下是使用select_dtypes()方法的替代解决方案:
In [41]: df[(df.select_dtypes(include=['number']) != 0).any(1)]
Out[41]:
0 1 2 3 4 5 6 7
1 manwra akriti T5 0 0 1 0 K
2 awma prabrtih B6 0 1 1 0 S
说明:
In [42]: df.select_dtypes(include=['number']) != 0
Out[42]:
3 4 5 6
0 False False False False
1 False False True False
2 False True True False
In [43]: (df.select_dtypes(include=['number']) != 0).any(1)
Out[43]:
0 False
1 True
2 True
dtype: bool
答案 2 :(得分:2)
你很亲密:
#your's
KT[KT.ix[:,3:-2] != 0]
#works
KT[(KT.ix[:,3:6] > 0).any(1)]
0 1 2 3 4 5 6 7
1 manwra akriti T5 0 0 1 0 K
2 awma prabrtih B6 0 1 1 0 S
#key diff
(KT.ix[:,3:6] > 0)
3 4 5 6
0 False False False False
1 False False True False
2 False True True False