Certainly seems like a bug. A PR fixing this would be very helpful.

At some point I’d like to move the functions for converting Dict’s to 
DataFrames out of the DataFrames package since there’s so many ways to do it 
that it’s hard for me to keep track of them.

 — John

On Jun 12, 2014, at 8:15 AM, Florian Oswald <[email protected]> wrote:

> Hi all,
> 
> I found some strange behaviour and am trying to find out where I'm going 
> wrong. I have a dict that stores several vectors of equal length, and I want 
> to make a DataFrame from it, where the columns should have the names of the 
> dict keys:
> 
> using DataFrames
> 
> function collectFields(dict::Dict)
>     di_keys = collect(keys(dict))
>     cols = [ dict[k] for k in di_keys ]
>     cnames = Array(Symbol,length(dict))
>     for i in 1:length(di_keys)
>         cnames[i] = symbol(di_keys[i])
>     end
>       return DataFrame(cols, cnames)
> end
> 
> di = ["a"=>[1,3],"b"=>[0.0,1.0]]
> collectFields(di)
> 
> This works as expected:
> 
> collectFields(di)
> 2x2 DataFrame
> |-------|---|-----|
> | Row # | a | b   |
> | 1     | 1 | 0.0 |
> | 2     | 3 | 1.0 |
> 
> however, changing the type of the vectors in dict:
> 
> di2 = ["a"=>[1,3],"b"=>[0,1]]
> 
> 
> julia> collectFields(di2)
> 2x2 DataFrame
> |-------|-------|----|
> | Row # | x1    | x2 |
> | 1     | [1,3] | a  |
> | 2     | [0,1] | b  |
> 
> 
> Any ideas? thanks!
> 

Reply via email to