如何在hdf5表中存储空值?

时间:2017-10-24 09:29:33

标签: python hdf5 pytables h5py

我想在hdf5文件中存储空值。

h5file = tables.open_file("demo.h5", mode="w", title="demo")
group  = h5file.create_group('/', 'depth','Dept Data information')
table = h5file.create_table(group, 'readout', depthdata , "depth data")
row_data = table.row
for i in range(len(record['local_timestamp'])):
        if record['bbno1'][i] is '':
            row_data['bbno1']  = NaN 
        else:
            row_data['bbno1'] = record['bbno1'][i]

我使用了这些代码,但它不起作用。我使用NaN和NULL但它不起作用。

2 个答案:

答案 0 :(得分:1)

HDF5在其类型模型中没有NULL(它不是关系数据库)。通常,如果数据集已扩展但未写入,则将获得填充值,其默认值为零,但是针对特定HDF5类型进行解释。

如果要在HDF5数据中存储“错误”或“不存在”语义的值,则必须提供自己的特殊值并自行检查。或者,如果您无法确定特殊值,则可以创建一个额外的数据集(或复合类型中的字段),指示数据值是否有效。

答案 1 :(得分:0)

如果可以使用“表”格式存储hdf5表,则可以使用pandas的to_hdf方法(使用pytables)存储一个numpy nan:

import numpy as np
import pandas as pd

df = pd.DataFrame([{'foo': np.nan}])
df.to_hdf('out.h5', key='bar', format='table', index=False, data_columns=df.columns.to_list())

数据类型必须为浮点数。