如何读取像csv文件一样的h5文件

How to read h5 file like csv file

我有一个适用于 csv 文件对象的算法

#diplay_id, ad_id, clicked(1 or 0)
colls = {'display_id':np.int32,
         'ad_id':np.int32,
         'clicked':bool}
trainData = pd.read_csv("trainData.csv")

for did, ad, c in trainData.itertuples():
    print did + ad + c #example

但是,现在我有一个“.h5”文件,我想像在算法中一样使用它。我正在阅读如下文件;

store = pd.HDFStore('data.h5')

但据我所知,HDFStore returns np 数组。你有什么想法在算法中使用数据文件吗?

这种情况下的主要区别在于 HDF5 文件可能包含多个 DFs/tables,因此您始终必须指定一个键(标识符)。

这是一个小演示:

In [14]: fn = r'C:\Temp\test_str.h5'

In [15]: store = pd.HDFStore(fn)

In [16]: store
Out[16]:
<class 'pandas.io.pytables.HDFStore'>
File path: C:\Temp\test_str.h5
/test            frame_table  (typ->appendable,nrows->10000,ncols->4,indexers->[index],dc->[a,c])

在这种情况下,只有一个 DF (key=/test) 存储在这个 HDF5 文件中。

假设您所有的 HDF5 文件只有一个 DF(每个文件一个密钥),您可以通过选择第一个密钥来动态处理它们:

In [17]: store.keys()
Out[17]: ['/test']

In [18]: key = store.keys()[0]

In [19]: key
Out[19]: '/test'

In [20]: store[key].head()
Out[20]:
        a       b       c                                                txt
0  689347  129498  770470  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...
1  954132   97912  783288  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...
2   40548  938326  861212  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...
3  869895   39293  242473  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...
4  938918  487643  362942  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...