我的代码:
frame = pd.DataFrame({'a': np.random.randn(100)})
store = pd.HDFStore('mydata.h5')
store['obj1'] = frame
store['obj1_col'] = frame['a']
store.put('obj2',frame,foramt='table')
store.select('obj2',where=['index >= 10 and index <= 15'])
给出此错误消息:
TypeError: cannot pass a where specification when reading from
a Fixed format store. this store must be selected in its entirety
如果每段代码都是正确的,为什么这段代码会给出这个错误?以后如何避免类似的错误?
(我想发表评论,但由于声誉我还不能发表......)
你好,这很有趣——出于某种原因它可以在我的机器上运行。为了完整起见,我附上了代码(添加了导入)。
import pandas as pd
import numpy as np
frame = pd.DataFrame({'a': np.random.randn(100)})
store = pd.HDFStore('mydata.h5')
store['obj1'] = frame
store['obj1_col'] = frame['a']
store.put('obj2',frame,format='table')
store.select('obj2',where=['index >= 10 and index <= 15'])
退货
a
10 -0.049168
11 0.130048
12 -1.553641
13 -0.978392
14 0.723070
15 0.066814
您能否提及您正在使用的库的版本?我想知道我们是否可能有不同版本的库。 我有
import tables
import sys
print(sys.version) # 3.10.6 (main, Mar 10 2023, 10:55:28) [GCC 11.3.0]
print(pd.__version__) # 1.5.0
print(np.__version__) # 1.23.3
print(tables.__version__) # 3.8.0 ... (this one is dependency)
澄清一下——我怀疑它可能与
pytables
版本有关,如本节所述,可能是相关的答案。
您可以尝试升级
pytables
(例如通过pip install --upgrade tables
)并再次运行吗?
原因是您之前清除了系统中的变量,如下所示:
导入系统 sys.modules[name].dict.clear()
解决方案:打开一个新文件并复制粘贴之前的内容