解决方法
使用HDFStore文档是
here,压缩文档是
here
In [26]: df = DataFrame(np.random.randn(100,2),columns=['A','B']) In [27]: df.to_hdf('test.h5','df',mode='w',format='table') In [28]: store = pd.HDFStore('test.h5') In [29]: nrows = store.get_storer('df').nrows In [30]: nrows Out[30]: 100 In [32]: r = np.random.randint(0,nrows,size=10) In [33]: r Out[33]: array([69,28,8,2,14,51,92,25,82,64]) In [34]: pd.read_hdf('test.h5',where=pd.Index(r)) Out[34]: A B 69 -0.370739 -0.325433 28 0.155775 0.961421 8 0.101041 -0.047499 2 0.204417 0.470805 14 0.599348 1.174012 51 0.634044 -0.769770 92 0.240077 -0.154110 25 0.367211 -1.027087 82 -0.698825 -0.084713 64 -1.029897 -0.796999 [10 rows x 2 columns]
要包含其他条件,您可以这样做:
# make sure that we have indexable columns df.to_hdf('test.h5',format='table',data_columns=True) # select where the index (an integer index) matches r and A > 0 In [14]: r Out[14]: array([33,33,95,69,21,43,58,58]) In [13]: pd.read_hdf('test.h5',where='index=r & A>0') Out[13]: A B 21 1.456244 0.173443 43 0.174464 -0.444029 [2 rows x 2 columns]