具有特定列类型的Julia数据帧

时间:2016-11-02 08:45:25

标签: dataframe julia

我想创建一个大小为N*K的数据框,我希望有些列为Float64,其他列为Int64。是否有一种特定的方式来定义允许我这样做的DataFrame?

这是我目前的做法:

df = convert(DataFrame, zeros(Float64, (N, K)))
df[:,K-2] = convert(Array{Int64,1}, df[:,K-2])
df[:,K-1] = convert(Array{Int64,1}, df[:,K-1])

1 个答案:

答案 0 :(得分:3)

您可以连接两个DataFrame:

julia> hcat(DataFrame(Float64, 3, 5), DataFrame(Int64, 3, 3))
3×8 DataFrames.DataFrame
│ Row │ x1 │ x2 │ x3 │ x4 │ x5 │ x1_1 │ x2_1 │ x3_1 │
├─────┼────┼────┼────┼────┼────┼──────┼──────┼──────┤
│ 1   │ NA │ NA │ NA │ NA │ NA │ NA   │ NA   │ NA   │
│ 2   │ NA │ NA │ NA │ NA │ NA │ NA   │ NA   │ NA   │
│ 3   │ NA │ NA │ NA │ NA │ NA │ NA   │ NA   │ NA   │

DataFrame构造函数还将类型向量作为参数:

julia> DataFrame([Float64, Float64, Int64, Int64], [Symbol("x$i") for i in 1:4], 3)
3×4 DataFrames.DataFrame
│ Row │ x1 │ x2 │ x3 │ x4 │
├─────┼────┼────┼────┼────┤
│ 1   │ NA │ NA │ NA │ NA │
│ 2   │ NA │ NA │ NA │ NA │
│ 3   │ NA │ NA │ NA │ NA │

您可以使用连接构建适当的类型向量:

julia> [repeat([Float64]; outer=4); repeat([Int64]; outer=2)]
6-element Array{DataType,1}:
 Float64
 Float64
 Float64
 Float64
 Int64  
 Int64