首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用块大小保存到新的HDFStore遍历HDFStore

使用块大小保存到新的HDFStore遍历HDFStore
EN

Stack Overflow用户
提问于 2013-07-11 19:07:28
回答 1查看 1.6K关注 0票数 2

我把我所有的数据都放到了一个HDFStore中(是的!),但是怎么把它取出来呢?

我已经在我的HDFStore中保存了6个DataFrames作为frame_table。每个表看起来都像下面这样,但长度不同(日期是儒略日期)。

代码语言:javascript
复制
>>> a = store.select('var1')
>>> a.head()
                      var1
x_coor y_coor date         
928    310    2006257   133
932    400    2006257   236
939    311    2006257   253
941    312    2006257   152
942    283    2006257    68

然后,我从我所有的表中选择日期为例如> 2006256的值。

代码语言:javascript
复制
>>> b = store.select_as_multiple(['var1','var2','var3','var4','var5','var6'], where=(pd.Term('date','>',date)), selector= 'var1')
>>> b.head()
                      var1   var2  var3  var4  var5  var6
x_coor y_coor date                                        
928    310    2006257   133  14987  7045    18   240   171
              2006273   136      0  7327    30   253   161
              2006289   125      0  -239    83   217   168
              2006305    95  14604  6786    13   215    57
              2006321    84      0  4548    13   133    88

这是可行的,但仅适用于相对较小的.h5文件。因此,对于我的普通.h5文件,我希望使用chunksize将其临时存储在HDFStore中(因为我还需要根据这个选择向其中添加一个新列)。我是这样想的(使用this):

代码语言:javascript
复制
for df in store.select_as_multiple(['var1','var2','var3','var4','var5','var6'], where=(pd.Term('date','>',date)), selector= 'var1', chunksize=15):
    tempstore.put('test',pd.DataFrame(df))

但随后只有一个区块被添加到存储中。但有以下情况:

代码语言:javascript
复制
tempstore.append('test',pd.DataFrame(df))

我得到了ValueError:只能追加到表中。我哪里做错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-11 19:35:33

当你试图用put来做这件事时,它会一直覆盖存储(用最新的块),然后你会在追加时得到错误(因为你不能追加到存储器/非表)。

这就是:

  • put编写一个单一的、不可追加的固定格式(称为storer),它写起来很快,但您不能追加,也不能查询(只在它的entirety).
  • append中获取它会创建一个table格式,这正是您在这里想要的(以及frame_table是什么)。

注意:你不需要做pd.DataFrame(df),因为df已经是一个框架了。

所以,首先这样做(删除商店),如果它在那里:

代码语言:javascript
复制
if 'test' in tempstore:
    tempstore.remove('test')

然后附加每个DataFrame:

代码语言:javascript
复制
for df in store.select_as_multiple(.....):
     tempstore.append('test', df)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17591765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档