gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 21:58:46 26 4
gpt4 key购买 nike

我将所有数据都放入了 HDFStore(是的!),但是如何从中取出数据..

我在我的 HDFStore 中保存了 6 个数据帧作为 frame_table。这些表格中的每一个看起来如下所示,但长度各不相同(日期是 Julian 日期)。

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

但是只有一个 block 被添加到存储中。但是:

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

我收到 ValueError: Can only append to Tables。我做错了什么?

最佳答案

当您尝试使用 put 执行此操作时,它会一直覆盖存储(使用最新的 block ),然后在追加时出现错误(因为您无法追加到存储/非-表)。

即:

  • put写入单一的、不可附加的固定格式(称为 storer),写入速度很快,但不能附加,也不能查询(只能完整获取)。

    <
  • append创建一个 table 格式,这是您在这里想要的(以及 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)

关于python - 使用 chunksize 保存到新的 HDFStore 中迭代 HDFStore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17591765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com