Как проверить, все ли элементы DataFrame неотрицательны?

Предположим, у меня есть DataFrame с числовыми элементами. Я хочу проверить, что все элементы неотрицательны. Я могу сделать что-то вроде:

df .> 0

что приводит к DataFrame из единиц и нулей. Как уменьшить его до одного истинного / ложного значения?


person Community    schedule 12.12.2020    source источник


Ответы (1)


Практически не распределяющий и эффективный способ сделать это:

all(all.(>(0), eachcol(df)))

or

all(all.(x -> isless(0, x), eachcol(df)))

в зависимости от того, как вы хотите обрабатывать missing значения.

Вот пример различия:

julia> df = DataFrame(a=[1, missing], b=1:2)
2×2 DataFrame
 Row │ a        b     
     │ Int64?   Int64 
─────┼────────────────
   1 │       1      1
   2 │ missing      2

julia> all(all.(>(0), eachcol(df)))
missing

julia> all(all.(x -> isless(0, x), eachcol(df)))
true

как и в случае с isless missing значение рассматривается как большее, чем любое другое значение.

person Bogumił Kamiński    schedule 12.12.2020