所以我将数据文件解析为pandas数据帧,然后使用HDFStore将文件保存到hdf5。代码:
def convert_folder_hdf5(folder, save_loc=None):
if save_loc is None:
save_loc = folder
filename = save_loc+'\\' + (folder.split('\\')[-1])+'.h5'
store = pd.HDFStore(filename, format="table", complevel=9, complib='blosc')
data = import_folder(folder)
if data['voltage recording'] is not None:
store['voltage_recording'] = data['voltage recording']
if data['linescan'] is not None:
store['linescan'] = data['linescan']
store.root.attributes = data['file attributes']
store.close()
但是,我要进入store.root.attributes我得到了:
^{pr2}$在存储.root返回(此特定文件夹没有行扫描文件):
/ (RootGroup) ''
children := ['voltage_recording' (Group)]
我只需在控制台中手动操作即可:
store.root.attributes = data['file attributes']
当我打电话的时候store.root.attributes我得到了我想要的。在
但是,如果我重新保存文件,并重新打开它,则store.root.attributes不见了(我得到了和上面一样的错误)。在
不能直接存储在节点中,而是存储在节点的属性部分。从here开始,您必须实际创建一个节点并使用
.attrs
属性来获取可以实际存储内容的位置。在下面是一种直接操作的方法:
Pandas仍在开发一个更通用的API来获取/设置属性,请随意评论:https://github.com/pydata/pandas/pull/7334
此外,在打开
HDFStore
时指定format='table'
将被忽略。这仅适用于to_hdf
。不能有整个存储的格式,只能逐个对象。http://pandas.pydata.org/pandas-docs/stable/io.html#table-format相关问题 更多 >
编程相关推荐