PyTable列顺序

时间:2010-10-15 08:36:00

标签: python numpy pytables

有没有办法用特定的列顺序创建PyTable?

默认情况下,对于createTable()的调用,在使用字典或类进行模式定义时,列按字母顺序排列。我需要建立一个特定的订单,然后使用numpy.genfromtxt()从文本中读取和存储我的数据。不幸的是,我的文本文件没有包含与文件数据相同的变量名。

此时,我的列按字母顺序排序,数据未对齐,因为它是根据文件布局排序的。并且希望在pyTable中保持相同的顺序(但不是必需的)。

由于

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:0)

例如,假设文本文件名为mydata.txt,并按如下方式组织:

time(row1)bVar(row1)dVar(row1)aVar(row1)cVar(row1)

time(row2)bVar(row2)dVar(row2)aVar(row2)cVar(row2) ...

time(rowN)bVar(rowN)dVar(rowN)aVar(rowN)cVar(rowN)

因此,希望创建一个按这些列排序的表 然后使用numpy.genfromtxt命令填充表。

# 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)

这使代码简单明了,速度非常快。但是,表格列总是如此 按字母顺序排序,并根据所需顺序对附加数据进行排序。是 有一种方法可以使表列的顺序遵循类定义顺序而不是按字母顺序排列。