擅长:python、mysql、java
<p>HDFStore记录表的方式是,按类型将列存储为单个numpy数组。你总是会得到所有的列,你可以过滤它们,所以你会得到你要求的回报。在0.10.0中,可以传递包含列的术语。</p>
<pre><code>store.select('df', [ Term('index', '>', Timestamp('20010105')),
Term('columns', '=', ['A','B']) ])
</code></pre>
<p>或者你可以事后重新编制索引</p>
<pre><code>df = store.select('df', [ Term('index', '>', Timestamp('20010105') ])
df.reindex(columns = ['A','B'])
</code></pre>
<p>这里的<code>axes</code>并不是真正的解决方案(实际上您创建的是存储转置帧)。此参数允许您重新排列轴的存储顺序,以便以不同的方式启用数据对齐。对于数据帧来说,这并不意味着什么;对于3d或4d结构,磁盘上的数据对齐对于真正快速的查询是至关重要的。</p>
<p>0.10.1将允许一个更优雅的解决方案,即数据列,也就是说,您可以选择某些列来表示为表存储中有自己的列,这样您就可以只选择它们。这是一个什么来品尝。</p>
<pre><code> store.append('df', columns = ['A','B','C'])
store.select('df', [ 'A > 0', Term('index', '>', Timestamp(2000105)) ])
</code></pre>
<p>另一种方法是将单独的表存储在文件的不同节点中,然后只能选择所需的内容。</p>
<p>总的来说,我再次推荐非常宽的桌子。hayden提供了Panel解决方案,这对您现在可能是一个好处,因为实际的数据排列应该反映您希望如何查询数据。</p>