Найти строки с ненулевыми значениями в подмножестве столбцов в 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
Вы были близки:
#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