Arrays 将Julia数组转换为数据帧

Arrays 将Julia数组转换为数据帧,arrays,dataframe,julia,Arrays,Dataframe,Julia,我有一个要转换为数据帧的数组X。根据web的推荐,我尝试转换为数据帧,并得到以下错误 julia>y=convert(数据帧,x) 错误:convert没有与convert匹配的方法(::Type{DataFrame},::Array{Float64,2}) 在基础转换中。jl:13 当我尝试DataFrame(x)时,转换工作正常,但我收到一个投诉,说转换不受欢迎 julia>DataFrame(x) 警告:DataFrame(::Matrix,::Vector))已弃用,请在/Users/M

我有一个要转换为数据帧的数组X。根据web的推荐,我尝试转换为数据帧,并得到以下错误

julia>y=convert(数据帧,x)
错误:
convert
没有与convert匹配的方法(::Type{DataFrame},::Array{Float64,2})
在基础转换中。jl:13

当我尝试
DataFrame(x)
时,转换工作正常,但我收到一个投诉,说转换不受欢迎

julia>DataFrame(x)
警告:DataFrame(::Matrix,::Vector))已弃用,请在/Users/Matthew/.julia/v0.3/DataFrames/src/deprecated.jl:54(重复2次)

有没有其他方法可以让我的代码保持一致

编辑: 朱莉娅0.3.2, 数据帧0.5.10 OSX 10.9.5

julia> x=rand(4,4)
4x4 Array{Float64,2}:
 0.467882   0.466358  0.28144   0.0151388
 0.22354    0.358616  0.669564  0.828768
 0.475064   0.187992  0.584741  0.0543435
 0.0592643  0.345138  0.704496  0.844822

julia> convert(DataFrame,x)
ERROR: `convert` has no method matching convert(::Type{DataFrame}, ::Array{Float64,2}) in convert at base.jl:13
这对我很有用:

julia> using DataFrames

julia> x = rand(4, 4)
4x4 Array{Float64,2}:
 0.790912  0.0367989  0.425089  0.670121
 0.243605  0.62487    0.582498  0.302063
 0.785159  0.0083891  0.881153  0.353925
 0.618127  0.827093   0.577815  0.488565

julia> convert(DataFrame, x)
4x4 DataFrame
| Row | x1       | x2        | x3       | x4       |
|-----|----------|-----------|----------|----------|
| 1   | 0.790912 | 0.0367989 | 0.425089 | 0.670121 |
| 2   | 0.243605 | 0.62487   | 0.582498 | 0.302063 |
| 3   | 0.785159 | 0.0083891 | 0.881153 | 0.353925 |
| 4   | 0.618127 | 0.827093  | 0.577815 | 0.488565 |
你在尝试不同的东西吗


如果这不起作用,请尝试发布更多的代码,我们可以更好地帮助您。

我多次被同一问题弄糊涂,最终意识到这个问题通常与数组的格式有关,在转换之前只需转置数组即可轻松解决

# convert a Matrix{Any} with a header row of col name strings to a DataFrame
# e.g. mat2df(["a" "b" "c"; 1 2 3; 4 5 6])

mat2df(mat) = convert(DataFrame,Dict(mat[1,:],
                     [mat[2:end,i] for i in 1:size(mat,2)]))

# convert a Matrix{Any} (mat) and a list of col name strings (headerstrings) 
# to a DataFrame, e.g. matnms2df([1 2 3;4 5 6], ["a","b","c"])

matnms2df(mat, headerstrs) = convert(DataFrame,
    Dict(zip(headerstrs,[mat[:,i] for i in 1:size(mat,2)])))
简言之,我建议:

julia> convert(DataFrame, x')

所以我在网上找到了这个,真的觉得自己很傻

using CSV
WhatIWant = DataFrame(WhatIHave)

这是根据R指南改编的,但它非常有效,因此在Julia v0.6.0下不再有效,因为您不能再以这种方式构造Dict了。将
Dict()
调用替换为
Dict(zip())
似乎可行。请注意,如果要转换的矩阵具有混合类型,则转换后的数据帧具有所有类型(请参阅)