微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用chunksize保存到新的HDFStore中迭代HDFStore

我将所有数据都放入了hdfstore(是的!),但是如何将它从中获取

我在我的hdfstore中保存了6个DataFrames作为frame_table.这些表中的每一个都如下所示,但长度不同(日期是朱利安日期).

>>> 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.

>>> 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):

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))

但是只有一个块被添加到商店.但是:

tempstore.append('test',pd.DataFrame(df))

我得到ValueError:只能附加到Tables.我做错了什么?

解决方法:

当您尝试执行此操作时,将其保留覆盖存储(使用最新的块),然后在追加时出现错误(因为您无法附加到storer / non-table).

那是:

> put一个不可附加的固定格式(称为存储器),写入速度快,但不能追加,也不能查询(只能完整地获取).
> append创建一个表格格式,这就是你想要的(以及frame_table是什么).

注意:您不需要执行pd.DataFrame(df),因为df已经是一个帧.

所以,首先执行此操作(删除商店),如果它在那里:

if 'test' in tempstore:
    tempstore.remove('test')

然后追加每个DataFrame:

for df in store.select_as_multiple(.....):
     tempstore.append('test', df)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐