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

时间:2016-07-19 14:00:50

标签: python pandas hdf5 pytables hdfstore

我有以下pandas数据帧:

import pandas as pd
df = pd.read_csv(filename.csv)

现在,我可以使用HDFStoredf对象写入文件(比如将键值对添加到Python字典中):

store = HDFStore('store.h5')
store['df'] = df

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

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

store 

输出

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

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

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

HDFStore.put(key="store.h", value=df, format=Table)

然而,这失败并出现错误:

TypeError: put() missing 1 required positional argument: 'self'

如何将Pandas Dataframes保存为PyTables表?

2 个答案:

答案 0 :(得分:4)

常见部分 - 创建或打开现有的HDFStore文件:

store = pd.HDFStore('store.h5')

如果您想索引所有列,请尝试此操作:

store.append('key_name', df, data_columns=True)

或者如果您想要仅为列的子集编制索引:

store.append('key_name', df, data_columns=['colA','colC','colN'])

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

保存DF

答案 1 :(得分:0)

  

如何将Pandas Dataframes保存为PyTables表?

添加到接受的答案,您应该始终关闭PyTable文件。为方便起见,Pandas将HDFStore作为上下文管理器提供:

with pd.HDFStore('/path/to/data.hdf') as hdf:
   hdf.put(key="store.h", value=df, format='table', data_columns=True)