2011-05-17 73 views
2

我有一个包含300列以上pytables的数据集,我希望能够轻松地选择不同的子集。这似乎没有一个非常优雅的解决方案,或者有什么我失踪?什么是使用pytables选择列的一个子集的最优雅的方式?

我也很高兴用一种方法来创建另一个表,它只是简单地从原始表中选择列,这样我就可以拥有我的主表,然后是我的子集teables。有没有办法做到这一点?

回答

6

会这样的工作?

from numpy import array, dtype 
from h5py import File 
from operator import itemgetter 

# Dummy data 

d = dtype([('a', int),('b', int),('c', int)]) 
a = array([(1, 6, 4), (5, 7, 1), (9, 7, 8), (3, 1, 2), (2, 1, 6)],dtype=d) 

hdf = File('tmp.hdf','a') 
hdf.create_dataset('data',data=a) 
hdf.flush() 

# Extract data 

dat = hdf.get('data',default=0) 

sub = ['a','c'] 
get = itemgetter(*sub) 

print get(dat) 

给人,

(array([1, 5, 9, 3, 2]), array([4, 1, 8, 2, 6])) 
+0

呀,这似乎是它的工作!谢谢。我没有真正看过使用h5py模块来读取文件而不是pytables。和itemgetter ...非常酷。 – user447736 2011-05-18 02:54:46

相关问题