我正在使用HDF5文件中的结构,其中包含名称为“/”的结构。当我加载所述文件时,我收到此警告:
ⓔ develop In [1] import pandas as pd
ⓔ develop In [2] store = pd.HDFStore('data/XXX-20150423-071618.h5')
ⓔ develop In [3] store
/home/XXX/virt/env/develop/lib/python2.7/site-packages/tables/group.
py:1156: UserWarning: problems loading leaf ``/log``::
the ``/`` character is not allowed in object names: 'XXX/align/aft_port_end/extend_pressure'
The leaf will become an ``UnImplemented`` node.
% (self._g_join(childname), exc))
我们可以更改这些内容,但它会成为主要的PITA,并且会涉及黑客攻击现有的关键文件。所以,尽管我们可能不愿意这样做。
我们是否有任何方式可以在名称中使用'/',或者只是不支持?
>>> pd.show_versions()
INSTALLED VERSIONS
------------------
commit: None
python: 2.7.5.final.0
python-bits: 64
OS: Linux
OS-release: 3.10.0-229.1.2.el7.x86_64
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_GB.UTF-8
pandas: 0.16.0
nose: 1.3.6
Cython: 0.22
numpy: 1.9.2
scipy: 0.15.1
statsmodels: None
IPython: 3.0.0
sphinx: 1.2.3
patsy: None
dateutil: 2.4.2
pytz: 2015.2
bottleneck: None
tables: 3.1.1
numexpr: 2.2.2
matplotlib: 1.4.3
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: None
httplib2: None
apiclient: None
sqlalchemy: 0.9.7
pymysql: None
psycopg2: None
答案 0 :(得分:1)
从技术上讲,该文件是非法的HDF5 - official spec in 5.2. HDF5 Path Names and Navigation明确将Name
定义为非斜杠字符串。所以,PyTables在这里拒绝你的输入并没有错(而且只需回到UnImplemented
节点就可以了。)
那就是说,如果你不害怕只是黑客攻击PyTables,你可以从tables/path.py
禁用违规检查。据我所知,唯一的副作用是使用自然命名不能使用对象,但这可能不是什么大问题。
(警告:我之前没有使用过PyTables,所以这完全取决于我对代码的阅读。)