Arrays 将Julia数组转换为数据帧
我有一个要转换为数据帧的数组X。根据web的推荐,我尝试转换为数据帧,并得到以下错误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
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())
似乎可行。请注意,如果要转换的矩阵具有混合类型,则转换后的数据帧具有所有类型(请参阅)