Найти строки с ненулевыми значениями в подмножестве столбцов в Pandas dataframe

у меня datframe с 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

мой выход должен быть!--5-->

manwra, akriti,T5,0,0,1,0,K 
awma, prabrtih,B6, 0,1,1,0,S

я попробовал следующее, чтобы получить ответ. Строковые значения находятся в colums 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

как получить желаемый результат

3 ответов


вот альтернативное решение, которое использует 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

предположим, что ваш фрейм данных df

df.loc[(df.loc[:, df.dtypes != object] != 0).any(1)]

enter image description here


Вы были близки:

 #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