store.root.attributes不拯救Pandas和玩具

2024-09-27 23:15:43 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我将数据文件解析为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不见了(我得到了和上面一样的错误)。在


Tags: 文件storenonedataifissaveroot
1条回答
网友
1楼 · 发布于 2024-09-27 23:15:43

不能直接存储在节点中,而是存储在节点的属性部分。从here开始,您必须实际创建一个节点并使用.attrs属性来获取可以实际存储内容的位置。在

下面是一种直接操作的方法:

In [16]: store.root._v_attrs.attributes = 'bar'

In [17]: store.root._v_attrs
Out[17]: 
/._v_attrs (AttributeSet), 5 attributes:
   [CLASS := 'GROUP',
    PYTABLES_FORMAT_VERSION := '2.1',
    TITLE := '',
    VERSION := '1.0',
    attributes := 'bar']

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

相关问题 更多 >

    热门问题