我正在尝试将许多.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的任何方法都是此练习的正确方法。 :)
任何有关完成此任务的帮助都将非常感谢!
答案 0 :(得分:0)
我认为os.walk
可能很棘手。很容易忘记你的位置。最重要的是,无论您是从.h5
阅读还是使用pd.HDFStore
,带有pandas的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文件中是否有多个数据集。