Dask DataFramesのリストにロードしたいHDF5ファイルがあります。 Dask pipeline approachの短縮版に続くループを使用してこれを設定しました。Python Dask DataFramesのリストにHDFファイルをロード
import pandas as pd
from dask import compute, delayed
import dask.dataframe as dd
import os, h5py
@delayed
def load(d,k):
ddf = dd.read_hdf(os.path.join(d,'Cleaned.h5'), key=k)
return ddf
if __name__ == '__main__':
d = 'C:\Users\User\FileD'
loaded = [load(d,'/DF'+str(i)) for i in range(1,10)]
ddf_list = compute(*loaded)
print(ddf_list[0].head(),ddf_list[0].compute().shape)
私は、このエラーメッセージが表示されます::
C:\Python27\lib\site-packages\tables\group.py:1187: UserWarning: problems loading leaf ``/DF1/table``::
HDF5 error back trace
File "..\..\hdf5-1.8.18\src\H5Dio.c", line 173, in H5Dread
can't read data
File "..\..\hdf5-1.8.18\src\H5Dio.c", line 543, in H5D__read
can't initialize I/O info
File "..\..\hdf5-1.8.18\src\H5Dchunk.c", line 841, in H5D__chunk_io_init
unable to create file chunk selections
File "..\..\hdf5-1.8.18\src\H5Dchunk.c", line 1330, in H5D__create_chunk_file_map_hyper
can't insert chunk into skip list
File "..\..\hdf5-1.8.18\src\H5SL.c", line 1066, in H5SL_insert
can't create new skip list node
File "..\..\hdf5-1.8.18\src\H5SL.c", line 735, in H5SL_insert_common
can't insert duplicate key
End of HDF5 error back trace
Problems reading the array data.
The leaf will become an ``UnImplemented`` node.
% (self._g_join(childname), exc))
メッセージが重複キーを言及してここでは、コードです。私はコードをテストするために最初の9つのファイルを繰り返し、そして私はdd.read_hdf
で使用する別のキーをアセンブルするために各繰り返しを使用しています。すべての反復にわたって、私はファイル名を同じにしておきます - 鍵だけが変更されています。
ファイルの内容を垂直方向に連結するには、dd.concat(list,axis=0,...)
を使用する必要があります。私のアプローチは、最初にそれらをリストにロードし、それらを連結することでした。
PyTablesとh5Pyがインストールされており、Daskバージョンが0.14.3+2
です。パンダ0.20.1
で
、私はこの作業を取得するように見える:
for i in range(1,10):
hdf = pd.HDFStore(os.path.join(d,'Cleaned.h5'),mode='r')
df = hdf.get('/DF{}' .format(i))
print df.shape
hdf.close()
私はDASKのデータフレームのリストにこのHDF5ファイルを読み込むことができます方法はありますか?または、それらを上下に連結する別のアプローチがありますか?
私はそれを逃していました。ありがとう! –
同じパイプラインでmixed delayedおよびnon-delayed関数を使用することはできますか? –
遅延値とdask.dataframesの間の変換方法については、[これらのドキュメント](http://dask.pydata.org/en/latest/delayed-collections.html)を参照してください。遅延関数内に遅延関数をネストする理由はありません。 – MRocklin