如何将Pandas DataFrame存储为HDF5 PyTables表(或CArray,EArray等)?

Jia*_*ang 4 python hdf5 pytables pandas hdfstore

我有以下熊猫数据框:

import pandas as pd
df = pd.read_csv(filename.csv)
Run Code Online (Sandbox Code Playgroud)

现在,我可以HDFStore用来将df对象写入文件(例如将键值对添加到Python字典中):

store = HDFStore('store.h5')
store['df'] = df
Run Code Online (Sandbox Code Playgroud)

http://pandas.pydata.org/pandas-docs/stable/io.html

当我查看内容时,此对象是一个frame

store 
Run Code Online (Sandbox Code Playgroud)

输出

<class 'pandas.io.pytables.HDFStore'>
File path: store.h5
/df            frame        (shape->[552,23252])
Run Code Online (Sandbox Code Playgroud)

但是,为了使用索引,应该将其存储为table对象。

我的方法是尝试HDFStore.put(),即

HDFStore.put(key="store.h", value=df, format=Table)
Run Code Online (Sandbox Code Playgroud)

但是,此操作失败并显示以下错误:

TypeError: put() missing 1 required positional argument: 'self'
Run Code Online (Sandbox Code Playgroud)

如何将Pandas Dataframe保存为PyTables表?

Max*_*axU 5

公用部分-创建或打开现有的HDFStore文件:

store = pd.HDFStore('store.h5')
Run Code Online (Sandbox Code Playgroud)

如果要索引所有列,请尝试以下操作:

store.append('key_name', df, data_columns=True)
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想索引一部分列,则执行以下操作:

store.append('key_name', df, data_columns=['colA','colC','colN'])
Run Code Online (Sandbox Code Playgroud)

PS HDFStore.append()默认以table格式保存DF