Mat*_*ijn 2 python pytables pandas
我将所有数据都放入了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
Run Code Online (Sandbox Code Playgroud)
然后我从我的所有表中选择日期为例如> 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
Run Code Online (Sandbox Code Playgroud)
这有效,但仅适用于相对较小的.h5文件.因此,对于我的普通.h5文件,我想使用chunksize将其临时存储在HDFStore中(因为我还要根据此选择添加新列).我这样想(使用这个):
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))
Run Code Online (Sandbox Code Playgroud)
但是只有一个块被添加到商店.但是:
tempstore.append('test',pd.DataFrame(df))
Run Code Online (Sandbox Code Playgroud)
我得到ValueError:只能附加到Tables.我做错了什么?
当你试图用put它来覆盖商店(使用最新的块)时,你会在追加时得到错误(因为你不能附加到商店/非表).
那是:
put写一个单一的,不可附加的固定格式(称为a storer),写入速度快,但你不能追加,也不能查询(只能完全得到它).
append创建一种table格式,这就是你想要的格式(以及它是什么frame_table).
注意:您不需要pd.DataFrame(df)像df已经是框架那样做.
所以,首先执行此操作(删除商店),如果它在那里:
if 'test' in tempstore:
tempstore.remove('test')
Run Code Online (Sandbox Code Playgroud)
然后追加每个DataFrame:
for df in store.select_as_multiple(.....):
tempstore.append('test', df)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1393 次 |
| 最近记录: |