将Julia数组转换为数据帧

时间:2014-11-05 23:32:32

标签: arrays dataframe julia

我有一个数组X,我想转换为数据帧。根据网络推荐,我尝试转换为数据框并收到以下错误。

julia> y=convert(DataFrame,x) ERROR: {转换{1}}

当我尝试has no method matching convert(::Type{DataFrame}, ::Array{Float64,2}) in convert at base.jl:13时,转换有效,但我得到一个投诉,即转换已弃用。

DataFrame(x)

我是否应该注意另一种保持代码一致的方法?

编辑: 朱莉娅0.3.2, DataFrames 0.5.10 OSX 10.9.5

julia> DataFrame(x)
WARNING: DataFrame(::Matrix, ::Vector)) is deprecated, use convert(DataFrame, Matrix) instead in DataFrame at /Users/Matthew/.julia/v0.3/DataFrames/src/deprecated.jl:54 (repeats 2 times)

4 个答案:

答案 0 :(得分:3)

这对我有用:

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 |

你在尝试不同的东西吗?

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

答案 1 :(得分:3)

# 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)])))

答案 2 :(得分:2)

我多次被同一个问题困惑,并最终意识到问题通常与数组的格式有关,并且很容易通过在转换之前转换数组来解决。

简而言之,我建议:

getPackageName()

答案 3 :(得分:0)

因此,我在网上找到了这个,说实话感觉很傻。

using CSV
WhatIWant = DataFrame(WhatIHave)

这是从R指南改编而成的,但效果如此好