It not quite clear to me how a DataFrame containing many columns where the first column column contains many row names can be describe as “empty”.
Do you want this?
julia> df = DataFrame()
0×0 DataFrame
julia> df[:rowname] = rn
3-element Array{String,1}:
"row1"
"row2"
"row3"
julia> for c in cn
df[Symbol(c)] = 0.0
end
julia> df
3×4 DataFrame
│ Row │ rowname │ col1 │ col2 │ col3 │
│ │ String │ Float64 │ Float64 │ Float64 │
├─────┼─────────┼─────────┼─────────┼─────────┤
│ 1 │ row1 │ 0.0 │ 0.0 │ 0.0 │
│ 2 │ row2 │ 0.0 │ 0.0 │ 0.0 │
│ 3 │ row3 │ 0.0 │ 0.0 │ 0.0 │