Python 从excel表构建hdf5结构
我正在从Excel表格中构建一个键列表: 我希望每个键都有一个“X”和一个“Y”子组。然后将其保存到密钥列表: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
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]