【问题标题】:Building a hdf5 structure from an excel table从 Excel 表构建 hdf5 结构
【发布时间】:2018-09-13 16:58:47
【问题描述】:

我正在从 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)

密钥列表如下所示:

现在我想从密钥列表构建一个 hdf5 结构。它应该是这样的:

pd.HDFStore 有这方面的应用吗?

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

【问题讨论】:

  • 您能否提供有关您的工作流程的更多信息[一两句话就可以]?嵌套字典是否不足以满足这种结构?
  • 在下一步中,我想将数据集附加到每个键。这是错误的方法吗?
  • 我有一个 hdf5 文件和一个 Excel 文件。 Excel 文件包含 hdf5 数据集的键。例如,我正在尝试借助 Excel 文件中的键对特定顶级组中的所有数据集值求和。
  • 另外,您打算将 pandas 数据帧存储在叶数据集或数值数组中,还是其他的?
  • 我还不知道。数据集值是浮点数。

标签: python python-3.x pandas dataframe hdf5


【解决方案1】:

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

改为使用h5py,它在语法上与numpy 有很好的联系。 pandas 仅用于读取您的 Excel 文件。阅读h5py documentation 了解如何将数据集添加到组。

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

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]

【讨论】:

  • 感谢您的回答。不幸的是,在我的办公室里,我们主要使用 Pandas 来处理 hdf5。我试图执行您的代码,但它返回一个 KeyError:“无法打开对象(未找到组件)”。带有“h5py\h5o.pyx”的东西,所以我假设 h5py 库没有更新。您会提供 Pandas.HDFStore 的解决方案吗?
  • 好的,明白了。我将把这个答案留在这里,供非 Office 受限人士使用。
猜你喜欢
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
相关资源
最近更新 更多