2010-10-15 7 views
1

Existe-t-il un moyen de créer un PyTable avec un ordre de colonne spécifique?PyTable Column Order

Par défaut, les colonnes sont classées par ordre alphabétique lors de l'utilisation du dictionnaire ou de la classe pour la définition de schéma pour l'appel à createTable(). Mon besoin est d'établir un ordre spécifique, puis d'utiliser numpy.genfromtxt() pour lire et stocker mes données à partir du texte. Malheureusement, mon fichier texte n'a pas les noms de variables inclus de la même manière que les données de fichier.

A ce moment, mes colonnes sont classées par ordre alphabétique et les données sont désalignées en ce qu'elles sont classées en fonction de la disposition du fichier. Et il est souhaitable de maintenir le même ordre dans le pyTable (mais pas essentiel).

Merci

+0

fournir quelques exemples de code aiderait considérablement vous obtenez plus de réponses (à savoir comment reproduire la situation que vous faites face)! – jsalonen

+0

Copie possible de [Existe-t-il un moyen de stocker les colonnes PyTable dans un ordre spécifique?] (Http://stackoverflow.com/questions/4303986/is-there-a-way-to-store-pytable-columns-in- un-spécifique-ordre) –

Répondre

0

Par exemple, en supposant un fichier texte est nommé mydata.txt et est organisé comme suit:

temps (ligne1) bvar (ligne1) Dvar (ligne1) avar (ligne1) CVar (ligne1)

temps (row2) bvar (row2) Dvar (row2) avar (row2) cVar (row2) ...

temps

(rOWN) bvar (rOWN) Dvar (rOWN) avar (rOWN) cVar (rowN)

Donc, le désir est de créer une table qui est ordonnée avec ces colonnes et ensuite utiliser la commande numpy.genfromtxt pour remplir la table.

# Column and Table definition with desired order 
class parmDev(tables.IsDescription): 
    time = tables.Float64Col() 
    bVar = tables.Float64Col() 
    dVar = tables.Float64Col() 
    aVar = tables.Float64Col() 
    cVar = tables.Float64Col() 

#... 

mytab = tables.createTable(group, tabName, paramDev) 

data = numpy.genfromtxt(mydata.txt) 
mytab.append(data) 

Ceci rend le code simple et très rapide. Cependant, les colonnes du tableau sont toujours classées par ordre alphabétique et les données ajoutées sont triées en fonction de l'ordre souhaité. Est là un moyen d'avoir l'ordre des colonnes de la table suivent l'ordre de définition de classe au lieu d'être alphabétique.