我将数据存储在hdf5文件中。奇怪的是我选择了一个条件相同的表,但HDFStore给出了不同的答案。
谁能告诉我为什么?
In [2]: import pandas as pd
In [3]: store=pd.HDFStore("./data/m2016.h5","r")
In [4]: store
Out[4]:
<class 'pandas.io.pytables.HDFStore'>
File path: ./data/m2016.h5
/m2016 frame_table (typ->appendable,nrows->37202055,ncols->6,indexers->[index],dc->[dt,code])
In [5]: a=store.select('m2016',where="code='000001'")
In [6]: b=store.select('m2016',where="code='000001'")
In [7]: a.shape
Out[7]: (2388318, 6)
In [8]: b.shape
Out[8]: (2374525, 6)
In [9]: a.head()
Out[9]:
dt market code price volume preclose
85920 2016-01-04 09:30:00 0 000001 11.98 1102900 11.99
85921 2016-01-04 09:31:00 0 000001 11.96 289100 11.99
85922 2016-01-04 09:32:00 0 000001 11.97 361800 11.99
85923 2016-01-04 09:33:00 0 000001 12.00 279200 11.99
85924 2016-01-04 09:34:00 0 000001 12.00 405600 11.99
我在我的三台计算机上测试了它,结果如下:
PC1,os:Win2012server,python:winpython 2.7.10.3(64bits),选择结果错误。
PC2,os:Win10,python winpython 2.7.10.3(64bits),选择结果错误。
PC3,os:Win7,python:Winpython 2.7.10.3(64bits),选择结果还可以!
也许HDFStore.select只能在Win7上运行?
答案 0 :(得分:0)
您的操作系统的默认编码可能有所不同?
这可以工作b = store.select(&#39; m2016&#39;,其中=&#34;代码= u&#39; 000001&#39;&#34;)
答案 1 :(得分:0)
我已经在Win7的PC上对它进行了更多测试,结果仍然是随机错误。
In [1]: import pandas as pd
In [2]: cd /projects
C:\projects
In [3]: store=pd.HDFStore("./data/m2016.h5","r")
In [4]: d0=store.select("m2016",where='dt<Timestamp("2016-01-10")')
In [5]: d1=store.select("m2016",where='dt<Timestamp("2016-01-10")')
In [6]: d0.shape
Out[6]: (6917149, 6)
In [7]: d1.shape
Out[7]: (4199769, 6)
In [8]: d0.tail()
Out[8]:
dt market code price volume preclose
455381 2016-04-21 11:11:00 1 600461 13.33 16400 13.2
455386 2016-04-21 11:16:00 1 600461 13.36 13800 13.2
455387 2016-04-21 11:17:00 1 600461 13.37 8300 13.2
455388 2016-04-21 11:18:00 1 600461 13.36 9800 13.2
455389 2016-04-21 11:19:00 1 600461 13.34 15300 13.2
In [9]: d1.tail()
Out[9]:
dt market code price volume preclose
573543 2016-04-22 14:03:00 1 601333 3.94 8200 3.97
573548 2016-04-22 14:08:00 1 601333 3.96 45000 3.97
573549 2016-04-22 14:09:00 1 601333 3.96 8800 3.97
573550 2016-04-22 14:10:00 1 601333 3.97 10700 3.97
573551 2016-04-22 14:11:00 1 601333 3.96 6800 3.97
In [10]: !ptdump m2016.h5
/ (RootGroup) ''
/m2016 (Group) ''
/m2016/table (Table(50957318,), shuffle, zlib(9)) ''
我上传了我的hdf5文件here