2014-11-05 139 views
2

我有一個數組X,我想將其轉換爲數據框。根據網絡推薦,我嘗試轉換爲數據框並獲得以下錯誤。將Julia數組轉換爲數據框

julia> y=convert(DataFrame,x) ERROR:轉換has no method matching convert(::Type{DataFrame}, ::Array{Float64,2}) in convert at base.jl:13

當我嘗試DataFrame(x),改建工程,但我得到的投訴,轉換已被棄用。

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)

有沒有我應該知道的,以保持我的代碼一致的另一種方法?

編輯: 朱莉婭0.3.2, DataFrames 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 

回答

2

這個工作對我來說:

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 | 

您是否嘗試不同的東西?

如果這不起作用,請嘗試發佈更多代碼,我們可以幫助您更好地完成工作。

2
# 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)]))) 
+1

這下不再朱莉婭v0.6.0的作品,因爲你不能建立一個快譯通這樣了。用Dict(zip())代替'Dict()'調用似乎可行。 – Frank 2017-09-14 19:34:38

+0

請注意,如果矩陣轉換具有混合類型,則轉換後的DataFrame具有所有Any(請參閱https://stackoverflow.com/questions/46487261/how-to-convert-a-mixed-type-matrix-to-dataframe-在-朱莉婭 - 識別 - 該列/ 46488660#46488660) – Antonello 2017-09-29 12:26:55

2

我被同樣的問題混淆了很多次,並最終實現了問題往往涉及到數組的格式,並且通過簡單地轉換之前調換陣列解決。

總之,我建議:

julia> convert(DataFrame, x')