如何在HDF5上限制pandas查询的大小,以便它不会超过RAM限制?

时间:2016-10-11 21:10:03

标签: python pandas dataframe hdf5 pytables

我们说我有一只大熊猫Dataframe

import pandas as pd

df = pd.DataFrame()

df

   Column1    Column2
0  0.189086 -0.093137
1  0.621479  1.551653
2  1.631438 -1.635403
3  0.473935  1.941249
4  1.904851 -0.195161
5  0.236945 -0.288274
6 -0.473348  0.403882
7  0.953940  1.718043
8 -0.289416  0.790983
9 -0.884789 -1.584088
........

查询示例为df.query('Column1 > Column2')

我们假设您想限制此查询的保存,因此该对象不是很大。是吗" pandas"要做到这一点的方法?

我的问题主要是用pandas查询HDF5对象。 HDF5对象可能比RAM大得多,因此查询可能比RAM大。

# file1.h5 contains only one field_table/key/HDF5 group called 'df'
store = pd.HDFStore('file1.h5')

# the following query could be too large 
df = store.select('df',columns=['column1', 'column2'], where=['column1==5'])

是否有pandas / Pythonic方法阻止用户执行超过一定大小的查询?

1 个答案:

答案 0 :(得分:3)

以下是调用chunksize时如何使用HDFStore.select()参数的小型演示:

for chunk in store.select('df', columns=['column1', 'column2'],
                          where='column1==5', chunksize=10**6):
    # process `chunk` DF