2017-10-07 159 views
2

我有一個數據集太大而無法直接讀入內存。我不想升級機器。從我的閱讀中,HDF5可能是解決我的問題的合適解決方案。但我不確定如何迭代地將數據框寫入HDF5文件,因爲我無法將csv文件作爲數據框對象加載。如何在python中將大型csv文件寫入hdf5?

所以我的問題是如何用python熊貓將大型CSV文件寫入HDF5文件。

回答

4

您可以閱讀使用chunksize參數塊CSV文件,每個塊附加到文件HDF:

hdf_key = 'hdf_key' 
df_cols_to_index = [...] # list of columns (labels) that should be indexed 
store = pd.HDFStore(hdf_filename) 

for chunk in pd.read_csv(csv_filename, chunksize=500000): 
    # don't index data columns in each iteration - we'll do it later ... 
    store.append(hdf_key, chunk, data_columns=df_cols_to_index, index=False) 
    # index data columns in HDFStore 

store.create_table_index(hdf_key, columns=df_cols_to_index, optlevel=9, kind='full') 
store.close() 
+0

感謝您的回答。我不熟悉pytables包。有沒有可能使用h5py? –

+0

Pandas基於'pytables'實現它自己的HDF API--我們應該使用該API來兼容原因... – MaxU

+0

因此不可能使用h5py? –