Thank you. I fear that Nullables will make the DataFrame very difficult to
use and turn many people away from Julia.
On Monday, October 3, 2016 at 12:20:32 PM UTC-4, Milan Bouchet-Valat wrote:
>
> Le lundi 03 octobre 2016 à 08:21 -0700, Min-Woong Sohn a écrit :
> >
> > I am using DataFrames from master branch (with NullableArrays as the
> > default) and was wondering how the following should be done:
> >
> > df = DataFrame()
> > df[:A] = NullableArray([1,2,3])
> >
> > The following are not allowed or return wrong values:
> >
> > df[1,:A] == 1 # false
> > df[1,:A] > 1 # MethodError: no method matching isless(::Int64,
> > ::Nullable{Int64})
> > df[3,:A] + 1 # MethodError: no method matching
> > +(::Nullable{Int64}, ::Int64)
> >
> > How should I get around these issues? Does anybody know if there is a
> > plan to support these kinds of computations directly?
> These operations currently work (after loading NullableArrays) if you
> rewrite 1 as Nullable(1), eg. df[1, :A] == Nullable(1). But the two
> first return a Nullable{Bool}, so you need to call get() on the result
> if you want to use them e.g. with an if. As an alternative, you can use
> isequal().
>
> There are discussions as regards whether mixing Nullable and scalars
> should be allowed, as well as whether these operations should be moved
> into Julia Base. See in particular
> https://github.com/JuliaStats/NullableArrays.jl/pull/85
> https://github.com/JuliaLang/julia/pull/16988
>
> Anyway, the best approach to work with data frames is probably to use
> frameworks like AbstractQuery.jl and Query.jl, which are not yet
> completely ready to handle Nullable, but should make this easier.
>
>
> Regards
>