我有一个带有测量直接数据的Nexus文件(foo.nxs),我希望用pandas打开它。但是,当我尝试典型的
时HDFStore('foo.nxs') or read_hdf('foo.nxs','/group')
它只返回一个空的商店:
<class 'pandas.io.pytables.HDFStore'>
File path: /foo.nxs
Empty
或TypeError:
TypeError: cannot create a storer if the object is not existing nor a value are passed
文档页面中的所有示例都首先创建一个hdf文件,在其中存储数据然后检索它,但这是从相同的pandas完成的。我想知道是否可以读取以前没有用pandas生成的hdf文件。
根据@Jeff的要求,这是ptdump输出的一部分:
/ (RootGroup) ''
/._v_attrs (AttributeSet), 4 attributes:
[HDF5_Version := '1.8.11',
NeXus_version := '4.3.0',
file_name := '/Messdaten/C9/20140423/messung_21h14m01.197.nxs',
file_time := '2014-04-23T21:14:01+01:00']
/exp_root.Kerr.DoublePulse2D.SuperDuperScan_V2_00001 (Group) ''
/exp_root.Kerr.DoublePulse2D.SuperDuperScan_V2_00001._v_attrs (AttributeSet), 1 attributes:
[NX_class := 'NXentry']
/exp_root.Kerr.DoublePulse2D.SuperDuperScan_V2_00001/scan_data (Group) ''
/exp_root.Kerr.DoublePulse2D.SuperDuperScan_V2_00001/scan_data._v_attrs (AttributeSet), 1 attributes:
[NX_class := 'NXdata']
/exp_root.Kerr.DoublePulse2D.SuperDuperScan_V2_00001/scan_data/actuator_1_1 (CArray(5, 121), zlib(6)) ''
atom := Float64Atom(shape=(), dflt=0.0)
maindim := 0
flavor := 'numpy'
byteorder := 'little'
chunkshape := (5, 121)
答案 0 :(得分:0)
你有一个普通的香草PyTables商店。所以这些实际上非常容易阅读(并且不需要pandas),但这将向您展示如何阅读它们(作为numpy数组)。
with pd.get_store('test.h5') as store:
data = store.root.exp_root.Kerr.DoublePulse2D.SuperDuperScan_V2_00001/scan_data/actuator_1_1.read()
文档是here。
这只是抓取PyTables根节点并读取数据。这是CArray
格式,是一个简单的数组。
HDFStore
将能够读取普通的PyTables Table
对象(不包含元数据),但只需读取数组即可。