gpt4 book ai didi

python - Pandas read_hdf() 在有效的 where 条件下返回 "invalid variable reference"

转载 作者:行者123 更新时间:2023-12-01 09:08:47 24 4
gpt4 key购买 nike

我正在尝试使用方法read_hdb的属性where将数据从大型HDF存储过滤到所需的子集:

phase = pd.read_hdf(DSPATH + '/phase-table.h5', 'phase', where='EXTSIDNAME=="A"')

根据文档,我可以使用基本逻辑条件指定数据集中定义的任何列。据 Pandas documentation支持语法 column_name == '字符串文字'

但是,对于我尝试指定的任何列,该库都会引发 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'

该列存在于数据存储中。如果我在没有过滤器的情况下加载它,我可以看到我正在尝试在确实存在的条件中指定:

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 bundle 中的最新稳定库。

最佳答案

如果您使用 to_hdf() 创建 HDF 存储,则需要指定 data_columns 参数。发布了类似的问题here .

一个例子:

d = {'Col': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'D'],
'X': [1, 2, 3, 4, 5, 6, 7, 8]}
df = pd.DataFrame.from_dict(d)

df 看起来像这样:

  Col  X
0 A 1
1 A 2
2 A 3
3 B 4
4 B 5
5 B 6
6 C 7
7 D 8

让我们使用 to_hdf() 将其写入 .h5 文件。重要的是格式等于'table':

df.to_hdf('myhdf.h5', 'somekey', format='table')

现在让我们使用 read_hdf() 来读取它:

pd.read_hdf('myhdf.h5', key='somekey', where='Col==A')

返回错误:

ValueError: The passed where expression: Col==A
contains an invalid variable reference
all of the variable refrences must be a reference to
an axis (e.g. 'index' or 'columns'), or a data_column
The currently defined references are: index,columns

什么给出了?

当您执行to_hdf()时,您还需要定义data_columns,如下所示:

df.to_hdf('myhdf.h5', 'somekey', format='table', data_columns=['Col', 'X'])

现在您可以使用 where 从 .h5 文件读取数据:

pd.read_hdf('myhdf.h5', key='somekey', where='Col==A')
Col X
0 A 1
1 A 2
2 A 3

where 作为列表:

pd.read_hdf('myhdf.h5', key='somekey', where=['Col==A', 'X==2'])
Col X
1 A 2

关于python - Pandas read_hdf() 在有效的 where 条件下返回 "invalid variable reference",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51828061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com