4

我有以下熊猫数据框:

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 表?

4

2 回答 2

5

公共部分 - 创建或打开现有的 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()保存 DFtable

于 2016-07-19T14:04:03.023 回答
2

如何将 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)
于 2017-09-09T05:00:23.407 回答