I think the core problem is that the current API + Nullable's is very 
cumbersome, but the switch to Nullable's will hopefully occur nearly 
simultaneously with the introduction of new API's that can make Nullable's 
much easier to deal with. David Gold spent the summer working on one 
approach that is, I think, much better than the current API; David Anthoff 
also has another approach that is substantially more powerful than the 
current API. The time between 0.5 and 0.6 may be a little chaotic in this 
regard, but I think the eventual results will be unequivocally worth the 
wait.

 -- John

On Monday, October 3, 2016 at 3:45:42 PM UTC-7, Min-Woong Sohn wrote:
>
> 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 
>>
>

Reply via email to