首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将“DataFrame”和“`numpy`”数组合并为H5

如何将“DataFrame”和“`numpy`”数组合并为H5
EN

Stack Overflow用户
提问于 2019-08-30 15:44:35
回答 2查看 748关注 0票数 0

我希望生成一个H5文件file.h5,它包含一个pandas DataFrame和一个numpy数组。

为了举例说明,假设我们将数组array和DataFrame df定义为:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
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')

问题

  1. 如何将array.h5dataframe.h5合并为file.h5
  2. 如何将arraydf合并成可输出到H5格式的结构?
EN

回答 2

Stack Overflow用户

发布于 2019-08-30 16:18:10

不完全是你想要的。我不知道这是否可能。但是您可以在同一个文件中写入数组数据。但是它正在为dataframe松开列索引名。

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2019-08-30 19:37:47

代码语言:javascript
复制
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

将熊猫对象写成文件:

代码语言:javascript
复制
In [141]: df.to_hdf('dataframe.h5',key='df')                                                                 
In [142]: sf.to_hdf('dataframe.h5',key='sf',mode='a')

h5py打开文件

代码语言:javascript
复制
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

将数组写入数据集:

代码语言:javascript
复制
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()     

我能读到这两个熊猫组:

代码语言:javascript
复制
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: int64

pd.read_hdf不能处理myarray

在shell中,我可以使用h5dump

代码语言:javascript
复制
1230:~/mypy$ h5ls dataframe.h5
df                       Group
myarray                  Dataset {2}
sf                       Group
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57729777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档