回答

收藏

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
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则