【发布时间】:2019-08-31 03:37:47
【问题描述】:
我希望生成一个 H5 文件 file.h5,其中包含 pandas DataFrame 和 numpy 数组。
举例来说,假设我们将数组 array 和 DataFrame df 定义为:
import numpy as np
import pandas as pd
array = np.array([0,1])
data = {'col': [2,3, 4]}
df = pd.DataFrame.from_dict(data)
我可以使用以下方法输出数组和 DataFrame 以分隔 H5 文件:
import h5py
f = h5py.File('array.h5', 'w')
f.create_dataset(name='my_array',
shape=array.shape,
dtype=array.dtype,
data=array)
df.to_hdf('dataframe.h5')
问题
- 如何将
array.h5或dataframe.h5合并到file.h5? - 如何将
array和df合并为可输出为H5 格式的结构?
【问题讨论】:
-
您可以将数组添加为新列,然后写入
.h5文件:df['array'] = pd.Series(array) -
h5py写入和读取numpy数组。df.to_hdf使用(我认为)pytables和某种Store模块。我自己并没有太多地使用它,但我认为df存储可以使用h5py读取,尽管它是一个复杂的group,使用df.values和行/列索引数组。 -
您应该能够对文件执行
to_hdf,然后使用附加模式使用h5py打开文件。然后编写数组数据集。但我对熊猫hdf的了解还不够,不知道负载会如何。另一个想法是将数组放入 pandas Series(如果是 1d)并保存。 -
在查看
dataframe.h5和h5py(或h5dump)时可能值得您了解它使用的组/数据集布局。 -
最终目标是拥有一个具有各种
numpy张量和DataFrames包含相应元数据的H5,这就是为什么我不能将数组添加到数据帧的原因。