Dataframe 来自具有标头的数组的数据帧

Dataframe 来自具有标头的数组的数据帧,dataframe,julia,Dataframe,Julia,我有一个带有标题行的数组,比如: arr = ["age" "height" "weight"; 20 175 73; 30 160 66] 我想把它转换成数据帧,推荐的方法是什么? 我目前的方法是下面的答案,有更好的建议吗?一行程序: # convert a Matrix{Any} with a header row of col name strings to a DataFrame # e.g. mat2df(["a" "b

我有一个带有标题行的数组,比如:

arr = ["age" "height" "weight"; 
       20     175     73; 
       30     160     66]
我想把它转换成数据帧,推荐的方法是什么? 我目前的方法是下面的答案,有更好的建议吗?

一行程序:

# 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) = 
    DataFrame([[mat[2:end,i]...] for i in 1:size(mat,2)], Symbol.(mat[1,:]))

# convert a Matrix and a list of col name strings to a DataFrame
# e.g. matncolnames2df([1 2 3;4 5 6], ["a","b","c"])

matncolnames2df(mat, colnames) = 
    DataFrame([[mat[:,i]...] for i in 1:size(mat,2)], Symbol.(colnames))
Re:Iain Dunning在下面的评论:这里曾经有一个宏,但是它调用的DataFrame构造函数被弃用了,上面的工作很好,所以现在它不见了。。。(别担心,没那么好,我想伊恩·邓宁只是出于好意:)

一句话:

# 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) = 
    DataFrame([[mat[2:end,i]...] for i in 1:size(mat,2)], Symbol.(mat[1,:]))

# convert a Matrix and a list of col name strings to a DataFrame
# e.g. matncolnames2df([1 2 3;4 5 6], ["a","b","c"])

matncolnames2df(mat, colnames) = 
    DataFrame([[mat[:,i]...] for i in 1:size(mat,2)], Symbol.(colnames))

Re:Iain Dunning在下面的评论:这里曾经有一个宏,但是它调用的DataFrame构造函数被弃用了,上面的工作很好,所以现在它不见了。。。(别担心,这没那么好,我想伊恩·邓宁只是出于好意:)

很棒的宏,非常好谢谢@iaindanning!:)请注意,如果conver的矩阵具有混合类型,则转换后的数据帧具有所有Any的(请参阅)更新答案,以修复@Antonello的问题,数据帧的列现在将具有正确的类型awesome宏,非常好谢谢@iaindanning!:)请注意,如果conver的矩阵具有混合类型,则转换后的数据帧具有所有Any的(请参阅)更新答案以修复@Antonello的问题,那么数据帧的列现在将具有正确的类型