对象名

时间:2015-05-05 07:40:43

标签: python pandas scipy

我正在使用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

1 个答案:

答案 0 :(得分:1)

从技术上讲,该文件是非法的HDF5 - official spec in 5.2. HDF5 Path Names and Navigation明确将Name定义为非斜杠字符串。所以,PyTables在这里拒绝你的输入并没有错(而且只需回到UnImplemented节点就可以了。)

那就是说,如果你不害怕只是黑客攻击PyTables,你可以从tables/path.py禁用违规检查。据我所知,唯一的副作用是使用自然命名不能使用对象,但这可能不是什么大问题。

(警告:我之前没有使用过PyTables,所以这完全取决于我对代码的阅读。)