Pytables检查列是否存在

时间:2016-07-12 06:41:07

标签: python pandas pytables

是否可以使用Pytables(或Pandas)来检测hdf文件的表是否包含某个列?要加载hdf文件,我使用:

from pandas.io.pytables import HDFStore
# this doesn't read the full file which is good
hdf_store = HDFStore('data.h5', mode='r')
# returns a "Group" object, not sure if this could be used...
hdf_store.get_node('tablename')

我也可以直接使用Pytables而不是Pandas。目的不是加载hdf文件的所有数据,因为这些文件可能很大,我只想确定某个列是否存在。

2 个答案:

答案 0 :(得分:2)

我可能已找到解决方案,但不确定(1)为什么会起作用,以及(2)这是否是一个强大的解决方案。

import tables
h5 = tables.openFile('data.h5', mode='r')
df_node = h5.root.__getattr__('tablename')
# Not sure why `axis0` contains the column data, but it seems consistent
# with the tested h5 files.
columns = df_node.axis0[:]

columns包含一个包含所有列名的numpy数组。

答案 1 :(得分:0)

使用Pandas 0.20.3和PyTables 3.3.0(HDF文件是使用Pandas创建的),我接受的解决方案对我无效。但是,这有效:

pd.HDFStore('data.hd5', mode='r').get_node('/path/to/pandas/df').table.colnames