Python(Pandas):用多索引存储数据框hdf5中
技术问答
245 人阅读
|
0 人回复
|
2023-09-14
|
我需要使用具有多个索引的大型数据框,所以我试图创建一个数据框来了解如何存储它hdf5文件中。数据框是这样的前两列有multi索引)
. b1 Y+ z5 f' ?* iSymbol Date C -07-21 4792B -07-21 4492A -07-21 5681B -07-21 8310A -07-21 1197C -07-21 4722 -07-21 7695 -07-21 1774我正在使用pandas.to_hdf,但在尝试选择组中的数据时,会创建固定格式存储:
* N6 E# W* s3 @, s6 _8 G' S, Pstore.select('table','Symbol == "A"')它回到了一些错误,主要问题是+ P' Y& d. x# O5 f
TypeError: cannot pass a where specification when reading from a Fixed format store. this store must be selected in its entirety然后我试图像这样添加DataFrame:' C) ?0 ?3 h# D1 @1 s+ H
store.append('ts1',timedata)那应该创建一个表,但这给了我另一个错误:
, X! m7 n: Y7 N% m) tTypeError: [unicode] is not implemented as a table column所以我需要的代码在表中存储数据帧HDF5格式并选择从单一索引的DATAS(为此,我发现了这个代码:store.select('timedata','Symbol== "A"'))
& l/ p( l0 b6 [# B. u5 ~$ a; @ 0 `; A" P9 \- @: t( P7 \
解决方案: 0 E& o8 Q! x8 k `
这是一个例子5 p2 z' l0 u+ M2 S; j
In [8]: pd.__version__Out[8]: '0.14.1'In [9]: np.__version__Out[9]: '1.8.1'In [10]: import sysIn [11]: sys.versionOut[11]: '2.7.3 (default,Jan 2013年9:17:50\n[GCC 4.4.5]'In [4]: df = DataFrame(np.arange(9).reshape(9,-1),index=pd.MultiIndex.from_product([list('abc'),date_range('20140721',periods=3)],names=['symbol','date']),columns=['value'])In [5]: dfOut[5]: valuesymbol date a20144年 -07-21 0 20144年 -07-22 1 20144年 -07-23 2b20144年 -07-21 3 20144年 -07-22 4 20144年 -07-23 5c20144年 -07-21 6 20144年 -07-22 7 20144年 -07-23 8In [6]: df.to_hdf('test.h5','df',mode='w',format='table')In [7]: pd.read_hdf('test.h5','df',where='date=20140722')Out[7]: valuesymbol date a20144年 -07-22 1b20144年 -07-22 4c20144年 -07-22 7In [12]: pd.read_hdf('test.h5','df',where='symbol="a"')Out[12]: valuesymbol date a20144年 -07-21 0 20144年 -07-22 1 20144年 -07-233 2 |
|
|
|
|
|