如何读取像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...
我有一个适用于 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...