是否可以使用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文件的所有数据,因为这些文件可能很大,我只想确定某个列是否存在。
答案 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