将Julia中的列名更改为字符串

时间:2017-12-25 17:50:50

标签: dataframe julia

这似乎是一个愚蠢的问题。最近刚从Julia开始,遇到了这个微不足道的问题。

按如下方式创建矩阵:

Matice = rand(10, 10)
Matice = convert(DataFrame, Matice)

想要将列名更改为A,B,C,......

NewColNames = Array(String,ncol(Matice))
for i = 1:(ncol(Matice))
    NewColNames[i] = string('A' + (i-1))
end

names!(Matice, NewColNames) 

最后一行产生错误。 还尝试做更直接的事情,例如:

for i = 1:(ncol(Matice))
    names(Matice)[i] = string('A' + (i-1))
end

但它不再起作用了。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我认为值得添加三个评论:

1)生成所需符号的最简单代码可能是

Symbol.('A':'A'+ncol-1)`

其中ncol是您想要的列数。

2)目前你可以从向量向量创建DataFrame并在构造函数中给出变量的名称,例如:

DataFrame([rand(10) for i in 1:10], Symbol.('A':'J'))

3)当合并并发布this PR to DataFrames时(可能最多几周),您将能够使用矩阵编写相同内容:

DataFrame(rand(10, 10), Symbol.('A':'J'))

答案 1 :(得分:0)

在Dan的帮助下,在不创建NewColNames向量的情况下发布替代解决方案:

names!(Matice, [Symbol('A' + (i-1)) for i in 1:(ncol(Matice))])