私は、各グループ内に複数のグループとデータセットを持つ、入れ子になったhdf5ファイルにPandasデータフレームからデータを書き込もうとしています。私はそれを日常的に将来的に成長する単一のファイルとして保持したいと思います。私は、入れ子構造が作成されたPandas DataframeをHDF5データセットに書き込む方法
import h5py
import numpy as np
import pandas as pd
file = h5py.File('database.h5','w')
d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
groups = ['A','B','C']
for m in groups:
group = file.create_group(m)
dataset = ['1','2','3']
for n in dataset:
data = df
ds = group.create_dataset(m + n, data.shape)
print ("Dataset dataspace is", ds.shape)
print ("Dataset Numpy datatype is", ds.dtype)
print ("Dataset name is", ds.name)
print ("Dataset is a member of the group", ds.parent)
print ("Dataset was created in the file", ds.file)
print ("Writing data...")
ds[...] = data
print ("Reading data back...")
data_read = ds[...]
print ("Printing data...")
print (data_read)
file.close(
)
この方法を達成したいものの構造を示し、次のコードで行くを持っていたが、それは、インデックスと列を失います。私は、私は、誰もがいくつかの光を当てることができますしてください。このエラー
AttributeError: 'Dataset' object has no attribute 'split'
を取得し、
df.to_hdf('database.h5', ds, table=True, mode='a')
を試みたが、うまくいきませんでした。多くのおかげで
のように、今後、すなわち操作で巨大になり、特定のグループからのデータを取得するための効率的な方法であるかどうかを疑問に思っても 'pandas'はhdf5'ファイル'にデータフレームを書き込むために、 'pytables'を使用しています。これらのファイルを 'h5py'で探しているので、ご質問があります。レイアウトは複雑ですが、それは不可能ではないことを思い出してください。 'h5py'は' hdf5'に本質的に 'numpy' iterfaceです。 – hpaulj
https://stackoverflow.com/questions/41173254/how-should-i-use-h5py-lib-for-storing-time-series-data – hpaulj