从 HDF5 获取表索引的最有效方法

Posted

技术标签:

【中文标题】从 HDF5 获取表索引的最有效方法【英文标题】:Most efficient way to get index of a table from HDF5 【发布时间】:2015-12-20 19:13:51 【问题描述】:

我有一个包含 pandas Series/DataFrame 表的 HDF5 文件。我需要获取存储在 HDF 中的键下的表的(熊猫)索引,但不一定是整个表:

我可以想到两种(实际上相同)获取索引的方法:

import pandas as pd

hdfPath = 'c:/example.h5'
hdfKey = 'dfkey'
# way 1:
with pd.HDFStore(hdfPath) as hdf:
    index = hdf[hdfKey].index

# way 2:
index = pd.read_hdf(hdfPath, hdfKey)

但是对于大约 2000 行的 pandas Series,这需要 0.6 秒:

%timeit pd.read_hdf(hdfPath, hdfKey).index
1 loops, best of 3: 605 ms per loop

有没有办法只获取 HDF 中表的索引?

【问题讨论】:

【参考方案1】:

HDFStore 对象有一个 select_column 方法,可以让您获取索引。请注意,它将返回一个以索引为值的系列。

with pd.HDFStore(hdfPath) as hdf:
    index = hdf.select_column(hdfKey, 'index').values

【讨论】:

以上是关于从 HDF5 获取表索引的最有效方法的主要内容,如果未能解决你的问题,请参考以下文章

在现有的大型表上创建列存储索引的最有效方法?

在R中的排序向量中获取索引的最有效方法?

从具有特定根的 SQL 表中获取最新分支的最有效方法是啥?

从 scipy CSR 矩阵索引到 numpy 数组的最有效方法?

从其他数据库更新表数据的最有效方法是啥?

从大型 JSON 文件创建树状结构的最有效方法