Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从excel表构建hdf5结构_Python_Python 3.x_Pandas_Dataframe_Hdf5 - Fatal编程技术网

Python 从excel表构建hdf5结构

Python 从excel表构建hdf5结构,python,python-3.x,pandas,dataframe,hdf5,Python,Python 3.x,Pandas,Dataframe,Hdf5,我正在从Excel表格中构建一个键列表: 我希望每个键都有一个“X”和一个“Y”子组。然后将其保存到密钥列表: import pandas as pd df = pd.read_excel('file.xlsx', usecols = ['A','B','C']) print(df) keylist = [] list1, list2, list3 = df['A'].tolist(), df['B'].tolist(), df['C'].tolist() for i in zip(li

我正在从Excel表格中构建一个键列表:

我希望每个键都有一个“X”和一个“Y”子组。然后将其保存到密钥列表:

import pandas as pd

df = pd.read_excel('file.xlsx', usecols = ['A','B','C'])
print(df)

keylist = []
list1, list2, list3 = df['A'].tolist(), df['B'].tolist(), df['C'].tolist()

for i in zip(list1, list2):
    val = map(str, i)
    keylist.append("/".join(val) + '/X')
    val = map(str, i)
    keylist.append("/".join(val) + '/Y')

print(keylist)
键列表如下所示:

现在我想从keylist构建一个hdf5结构。应该是这样的:

pd.HDFStore是否有此应用程序


编辑:不幸的是,我们在我的办公室只使用Pandas,而不是h5py来处理hdf5文件。到目前为止提供的解决方案(h5py)不起作用。

如果您的数据由
float
数组组成,我建议您不要为此使用
pd.HDFStore

相反,使用
h5py
,它在语法上与
numpy
紧密结合。仅在读取Excel文件时使用
pandas
。有关如何向组中添加数据集的信息,请阅读

这种方法的好处是,您会发现它更高效(
pd.HDFStore
有开销)并且可以传输(您的HDF5文件可以在Python之外读取)


你能提供更多关于你的工作流程的信息吗[一两句话就可以了]?嵌套字典是否不足以满足此结构?在下一步中,我希望将数据集附加到每个键。这是错误的方法吗?我有一个hdf5文件和一个Excel文件。Excel文件保存hdf5数据集的键。例如,我尝试在Excel文件中的键的帮助下,对特定顶部组中的所有数据集值求和。此外,您是否将数据帧存储在叶数据集或数字数组中,或者其他什么?我还不知道。数据集值是浮动的。谢谢你的回答。不幸的是,在我的办公室,我们主要使用熊猫来处理hdf5。我试图执行您的代码,但它返回一个KeyError:“无法打开对象(未找到组件)”。带有“h5py\h5o.pyx”的内容,因此我假设h5py库没有更新。你能为熊猫提供一个节目吗?好的,明白了。我将把这个答案留给非办公室人员。
import pandas as pd
import h5py

df = pd.DataFrame([['blue', 'a', 'a1'], ['blue', 'a', 'a2'],
                   ['blue', 'b', 'b1'], ['red', 'c', 'c1']],
                  columns=list('ABC'))

## read in file
# df = pd.read_excel('group_file.xlsx')

## create group strings
group_strings = ['/'+'/'.join(route) for route in df.values]

# ['/blue/a/a1', '/blue/a/a2', '/blue/b/b1', '/red/c/c1']

## create HDF5 groups
with h5py.File('file.h5', 'w') as f:
    for group in group_strings:
        for item in ('X', 'Y'):
            grp = f[group+'/'+item]