如何将 Pandas DataFrame 存储为 HDF5 PyTables table(或 CArray、EArray 等)?
How does one store a Pandas DataFrame as an HDF5 PyTables table (or CArray, EArray, etc.)?
我有以下 pandas 数据框:
import pandas as pd
df = pd.read_csv(filename.csv)
现在,我可以使用 HDFStore
将 df
对象写入文件(就像将键值对添加到 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 数据帧保存为 PyTables 表?
公共部分 - 创建或打开现有的 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
How does one save Pandas Dataframes as PyTables tables?
添加到已接受的答案中,您应该始终关闭 PyTable 文件。为方便起见,Pandas 提供 HDFStore 作为上下文管理器:
with pd.HDFStore('/path/to/data.hdf') as hdf:
hdf.put(key="store.h", value=df, format='table', data_columns=True)
我有以下 pandas 数据框:
import pandas as pd
df = pd.read_csv(filename.csv)
现在,我可以使用 HDFStore
将 df
对象写入文件(就像将键值对添加到 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 数据帧保存为 PyTables 表?
公共部分 - 创建或打开现有的 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
How does one save Pandas Dataframes as PyTables tables?
添加到已接受的答案中,您应该始终关闭 PyTable 文件。为方便起见,Pandas 提供 HDFStore 作为上下文管理器:
with pd.HDFStore('/path/to/data.hdf') as hdf:
hdf.put(key="store.h", value=df, format='table', data_columns=True)