How does one store a Pandas DataFrame as an HDF5 PyTables table (or CArray, EArray, etc.)?
我有以下pandas数据帧:
1 2 | import pandas as pd df = pd.read_csv(filename.csv) |
现在,我可以使用
1 2 | store = HDFStore('store.h5') store['df'] = df |
http://pandas.pydata.org/pandas-docs/stable/io.html
当我查看内容时,此对象是
1 | store |
输出
1 2 3 | <class 'pandas.io.pytables.HDFStore'> File path: store.h5 /df frame (shape->[552,23252]) |
但是,为了使用索引,应该将其存储为
我的方法是尝试
1 | HDFStore.put(key="store.h", value=df, format=Table) |
但是,这失败并出现错误:
1 | TypeError: put() missing 1 required positional argument: 'self' |
如何将Pandas Dataframes保存为PyTables表?
常见部分 - 创建或打开现有的HDFStore文件:
1 | store = pd.HDFStore('store.h5') |
如果您想索引所有列,请尝试此操作:
1 | store.append('key_name', df, data_columns=True) |
或者,如果您想要仅为列的子集编制索引:
1 | store.append('key_name', df, data_columns=['colA','colC','colN']) |
PS
How does one save Pandas Dataframes as PyTables tables?
添加到接受的答案,您应该始终关闭PyTable文件。 为方便起见,Pandas将HDFStore作为上下文管理器提供:
1 2 | with pd.HDFStore('/path/to/data.hdf') as hdf: hdf.put(key="store.h", value=df, format='table', data_columns=True) |