python – 从给定的索引列表中选择HDFStore中的行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 从给定的索引列表中选择HDFStore中的行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2631字,纯文字阅读大概需要4分钟。
内容图文
我有一个大数据集,不适合内存.我目前将其存储在具有2个表的HDFStore中:df_hist是由MultiIndex索引的直方图的集合,其中第一级标记直方图,第二级标记直方图箱. df_params包含用于生成每个直方图的模拟参数,并由直方图标签(即df_hist索引的第一级)索引.
In [1]: store = pandas.HDFStore('test.h5')
In [2]: store['df_params'].head()
Out[2]:
N z sample sigma oct T
0 64 6 6235 0.6 22 0.8200
1 64 6 6235 0.6 22 0.8476
2 64 6 6235 0.6 22 0.8757
3 64 6 6235 0.6 22 0.9043
4 64 6 6235 0.6 22 0.9336
In [3]: store['df_hist'].head()
Out[3]:
p p_err
id bin
0 0 0.000382 0.000008
1 0.002010 0.000025
2 0.005244 0.000038
3 0.009347 0.000052
4 0.012662 0.000058
我想要做的是选择直方图的一个子集,使用df_params表上的某些查询加载,然后只加载df_hist中的相关行.如果数据能够适合内存,我会做类似的事情:
df_params = store['df_params']
df_hist = store['df_hist']
selection = df_params.index[df_params['N']==64]
df = df_hist[df_hist.index.get_level_values('id').isin(selection)]
当df_hist太大而无法存储在内存中时,实现此目的的最佳方法是什么?理想情况下,可以做类似的事情
store.select('df_hist', where='id isin selection')
解决方法:
In [5]: parms = DataFrame({ 'A' : [1,1,2,2,3] })
In [6]: parms
Out[6]:
A
0 1
1 1
2 2
3 2
4 3
In [7]: parms.to_hdf('parms.hdf','df',mode='w',format='table',data_columns=['A'])
In [8]: selection = pd.read_hdf('parms.hdf','df',where='A=[2,3]')
In [9]: selection
Out[9]:
A
2 2
3 2
4 3
In [10]: hist = DataFrame(np.random.randn(25,1),columns=['data'],
....: index=MultiIndex.from_tuples([ (i,j) for i in range(5) for j in range(5) ],
....: names=['l1','l2']))
In [11]: hist
Out[11]:
data
l1 l2
0 0 1.232358
1 -2.677047
2 -0.168854
3 0.538848
4 -0.678224
1 0 0.092575
1 1.297578
2 -1.489906
3 -1.380054
4 0.701762
2 0 1.397368
1 0.198522
2 1.034036
3 0.650406
4 1.823683
3 0 0.045635
1 -0.213975
2 -1.221950
3 -0.145615
4 -1.187883
4 0 -0.782221
1 -0.626280
2 -0.331885
3 -0.975978
4 2.006322
这适用于0.12
In [15]: pd.read_hdf('hist.hdf','df',where=pd.Term('l1','=',selection.index.tolist()))
Out[15]:
data
l1 l2
2 0 1.397368
1 0.198522
2 1.034036
3 0.650406
4 1.823683
3 0 0.045635
1 -0.213975
2 -1.221950
3 -0.145615
4 -1.187883
4 0 -0.782221
1 -0.626280
2 -0.331885
3 -0.975978
4 2.006322
这也适用于master / 0.13
In [16]: pd.read_hdf('hist.hdf','df',where='l1=selection.index')
Out[16]:
data
l1 l2
2 0 1.397368
1 0.198522
2 1.034036
3 0.650406
4 1.823683
3 0 0.045635
1 -0.213975
2 -1.221950
3 -0.145615
4 -1.187883
4 0 -0.782221
1 -0.626280
2 -0.331885
3 -0.975978
4 2.006322
内容总结
以上是互联网集市为您收集整理的python – 从给定的索引列表中选择HDFStore中的行全部内容,希望文章能够帮你解决python – 从给定的索引列表中选择HDFStore中的行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。