【发布时间】:2019-01-20 12:31:59
【问题描述】:
我正在尝试使用方法 read_hdb 的属性 where 将数据从大型 HDF 存储过滤到所需的子集:
phase = pd.read_hdf(DSPATH + '/phase-table.h5', 'phase', where='EXTSIDNAME=="A"')
根据文档,我可以使用基本逻辑条件指定数据集中定义的任何列。根据 Pandas documentation 语法 column_name == 'string literal' 是支持的。
但是,对于我尝试指定的任何列,该库都会引发 ValueError 异常:
ValueError: The passed where expression: EXTSIDNAME=="A"
contains an invalid variable reference
all of the variable references must be a reference to
an axis (e.g. 'index' or 'columns'), or a data_column
The currently defined references are: index,columns
唯一没有通过错误的条件是'index=1'。
该列存在于数据存储中。如果我在没有过滤器的情况下加载它,我可以看到我正在尝试指定 where 条件确实存在:
Index(['EXTSIDNAME', 'HOSTNAME', 'TIMESTP', 'SUM_ENDDATE','MODULE_ID','MODULENAME',
'MODULE_STARTDATE', 'MODULE_ENDDATE', 'PHASE_ID','PHASENAME',
'PHASE_STARTDATE', 'PHASE_ENDDATE', 'ID', 'PhaseDuration'], dtype='object')
我正在使用 Anaconda 包中最新的稳定库。
【问题讨论】: