我希望生成一个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.h5array和df合并成可输出到H5格式的结构?发布于 2019-08-30 16:18:10
不完全是你想要的。我不知道这是否可能。但是您可以在同一个文件中写入数组数据。但是它正在为dataframe松开列索引名。
import numpy as np
import pandas as pd
import h5py
np_array = np.array([0, 1])
data = {'col': [2, 3, 4], 'col2': [1, 2, 3]}
df = pd.DataFrame.from_dict(data)
with h5py.File("my_test_file.h5", 'w') as hf:
hf.create_dataset("numpy_db", data=np_array)
hf.create_dataset("pd_db", data=df)
with h5py.File('my_test_file.h5', 'r') as hf:
np_db = hf['numpy_db'][:]
pd_db = hf['pd_db'][:]
### But you will loose the column index name
pd_db = pd.DataFrame(pd_db)
np_db发布于 2019-08-30 19:37:47
In [134]: array = np.array([0,1])
...: data = {'col': [2,3, 4]}
...: df = pd.DataFrame.from_dict(data)
In [135]: import h5py
In [136]: df
Out[136]:
col
0 2
1 3
2 4
In [138]: sf = pd.Series(array)
In [139]: sf
Out[139]:
0 0
1 1
dtype: int64将熊猫对象写成文件:
In [141]: df.to_hdf('dataframe.h5',key='df')
In [142]: sf.to_hdf('dataframe.h5',key='sf',mode='a')用h5py打开文件
In [144]: f = h5py.File('dataframe.h5', 'a')
In [145]: list(f.keys())
Out[145]: ['df', 'sf']
In [146]: list(f['df'].keys())
Out[146]: ['axis0', 'axis1', 'block0_items', 'block0_values']
In [147]: list(f['sf'].keys())
Out[147]: ['index', 'values']
In [148]: f['sf/values'][:]
Out[148]: array([0, 1]) # the series is easy to read将数组写入数据集:
In [149]: f.create_dataset(name='myarray',data=array)
Out[149]: <HDF5 dataset "myarray": shape (2,), type "<i8">
In [150]: list(f.keys())
Out[150]: ['df', 'myarray', 'sf']
In [151]: f.close() 我能读到这两个熊猫组:
In [154]: pd.read_hdf('dataframe.h5', key='df')
Out[154]:
col
0 2
1 3
2 4
In [155]: pd.read_hdf('dataframe.h5', key='sf')
Out[155]:
0 0
1 1
dtype: int64pd.read_hdf不能处理myarray。
在shell中,我可以使用h5dump或
1230:~/mypy$ h5ls dataframe.h5
df Group
myarray Dataset {2}
sf Grouphttps://stackoverflow.com/questions/57729777
复制相似问题