2017-07-26 2 views
2

Je souhaite nommer les noms de colonne de DatFrame vide.Noms des colonnes julia DataFrame

Je rencontre des problèmes pour (re) nommer plusieurs colonnes d'un DataFrame dans la version 0.6.

J'ai essayé noms: générer

df = DataFrame() 
nms = [":x$i" for i in 1:2] 
df[nms[1] = rand(10)] 
df[nms[2] = rand(10)] 

mais l'exigence de symbole pour les noms ne fonctionne pas avec le $ macro. Quelqu'un at-il une solution?

Répondre

4
df = DataFrame() 
nms = [Symbol("x$i") for i in 1:2] 
df[nms[1]] = rand(10) 
df[nms[2]] = rand(10) 

fonctionne et est le plus similaire au code en question. La clé consiste à indexer des DataFrames avec des symboles Julia et non des chaînes.

Une méthode plus compacte pour créer df utilise un constructeur DataFrame qui prend les colonnes comme paramètres. Il y en a un, mais les paramètres sont paramètres nommés, donc vous devez splat (c'est-à-dire ...) un Dict pour insérer les paramètres. Le Dict lui-même doit être généré par programme. Pour maintenir un ordre spécifique des colonnes dans le Dict, vous avez besoin d'un OrderedDict. Le résultat est:

using DataFrames, DataStructures 

df = DataFrame(;OrderedDict((Symbol("x$i")=>rand(10) for i=1:3)...)...)