【问题标题】:Problems converting HDF5 files to .CSV Pandas将 HDF5 文件转换为 .CSV Pandas 时出现问题
【发布时间】:2018-05-23 01:08:13
【问题描述】:

我正在尝试将许多 .h5 文件转换为可以在 tableau 中打开的格式。因为我是 python 调试器的新手,所以我无法检测到任何可能发生的运行时错误。另外,我不确定是否最好拆分生成的 CSV,或者将其全部保存到一个文件中。我不肯定如何做这些事情。

from pandas import HDFStore
import pdb

import os
indir = 'C:\Users\Aktosar\data'
for root, dirs, filenames in os.walk(indir)
    for f in filenames:
        Pandas.convert(f)

我也无法决定是使用 .toCSV 还是其他保存方法。任何成功地将所有数据转换为可在 tableau 中打开的 csv 的方法都是本练习的正确方法。 :)

非常感谢您对完成此操作的任何帮助!

【问题讨论】:

  • 我写的关于here 的方法可能会帮助你理解这个概念。
  • 我会试一试。将最终连接的数据帧保存到 .csv 文件应该不会太难。感谢您的链接!
  • 在我的一生中,我无法解决“找不到指定的路径”错误。这对你来说意味着什么吗?我发誓我有正确的道路。我注意到最后的 . 并想知道这是否会影响任何事情。谢谢!

标签: python pandas csv tableau-api hdf5


【解决方案1】:

我认为os.walk 可能很棘手。很容易忘记你在哪里。最重要的是,.h5 和 pandas 也可能很棘手,无论您是从 pd.HDFStore 阅读还是使用 pd.read_hdf。找出 h5 文件中的数据集名称更加荒谬。也就是说,很多事情都可能出错。

import pandas as pd
import numpy as np
import h5py
import os

dfs = []
for path, dirs, filenames in os.walk(os.curdir):
    if path != os.curdir:
        print(path, dirs, filenames)
        for file in filenames:
            file_path = os.path.join(path, file)
            h5_store = h5py.File(file_path, mode='r')
            dataset_names = list(h5_store.keys())
            for dataset in dataset_names:
                df = pd.DataFrame(h5_store[dataset].value)
                print(file, df.shape)
                dfs.append(df)
            h5_store.close()

final = pd.concat(dfs, ignore_index=True).reset_index()
print(final.shape)

我的目录如下所示:

  dir1
      arr0.h5
     dir4
         arr0.h5
         arr1.h5
         arr2.h5
         arr3.h5
  dir2
      arr0.h5
      arr1.h5
  dir3
      arr0.h5
      arr1.h5
      arr2.h5
     dir5
         arr0.h5
     dir6
         arr0.h5
         arr1.h5
         arr2.h5
         arr3.h5
        dir7
            arr0.h5
            arr1.h5
            arr2.h5
            arr3.h5

df = pd.DataFrame(h5_store[dataset].value) 部分是关键。那可能行不通。这取决于数据的类型。如果这不起作用,您可以尝试pd.read_hdf(...)。这还取决于每个 .h5 文件中是否有多个数据集。

【讨论】:

  • 我会在今天早上尝试并告诉你。感谢您的回复!另外,我担心不会自动引入列名。有什么办法吗?
  • 获取无法打开文件,找不到文件签名错误。它与关闭文件有关吗?另一篇文章说这可能意味着数据损坏......
  • 也许您必须在某些时候关闭代码中的文件? reference.
  • 我在其中关闭了文件,但仍然遇到同样的打开失败错误。我应该在外循环结束时调用它,对吗?
  • 你能分享完整的错误吗?在附加到 dfs 之后,您应该以与 h5_store 相同的缩进级别调用它。你能检查一下 dfs 是否有任何东西进入那里吗?
猜你喜欢
  • 2016-12-13
  • 2021-09-07
  • 1970-01-01
  • 2014-07-08
  • 2011-09-14
  • 2020-03-16
  • 2019-12-02
  • 1970-01-01
  • 2020-11-11
相关资源
最近更新 更多