我试图用pandas库读取一个64gb的HDF文件(用blosc压缩)。数据帧包含3列和11410996915行。我试图用这个方法按索引选择具体的行熊猫。阅读争论在哪里。问题是,有时我需要获取数千行,因此在where参数中我输入了如下内容:
simMat = pd.read_hdf('global.h5','matrix', columns=['similarity'], where='index in {}'.format(listIdx))
其中listIdx是一个整数列表,表示我要返回的索引。当这个列表包含超过31个元素时,我得到一个内存错误。我开始查看pandas库的代码,并在文件中发现了这一点pytables.py,在BinOp类中,有一个名为_max_selectors的变量,它将值指定为31。此变量在这段代码的后面使用:
^{pr2}$使用过滤器会导致库尝试加载整个数据帧,这会产生MemoryError。我还试图使用值为10的chunksize参数,但它也不起作用。你知道用这么大的索引集查询HDF文件的更好方法吗?在
您可以使用以下技术:
其中
vals
是pd.Series
或Python list
变量也可以使用属于其他DF的列进行筛选:
^{pr2}$或其他DF的索引:
演示:
设置
试验
与Python列表相同:
相关问题 更多 >
编程相关推荐