Python 内存不足,正在筛选pandas中的HDF5表

Python 内存不足,正在筛选pandas中的HDF5表,python,pandas,filtering,Python,Pandas,Filtering,我有一个4+Gb的HDF5表,其中的行对应于树状结构中的节点。共有三列突出显示:姓名,姓氏,体重。姓氏记录给定节点的父节点的名称,名称是当前节点的名称(相对于父节点),权重是节点的权重。名称和姓氏都是字符串,姓氏+名称构成此节点的唯一标识符。最后,对于任何给定节点,其子节点的权重严格小于其自身的权重 我的问题是,我想筛选此表以查找权重小于给定阈值M的所有节点,但如果某个节点存在于我的最终集合中,则其父节点不应在集合中 我使用了pd.read_hdf(,其中=['weight

我有一个4+Gb的HDF5表,其中的行对应于树状结构中的节点。共有三列突出显示:
姓名
姓氏
体重
。姓氏记录给定节点的父节点的名称,名称是当前节点的名称(相对于父节点),权重是节点的权重。名称和姓氏都是字符串,姓氏+名称构成此节点的唯一标识符。最后,对于任何给定节点,其子节点的权重严格小于其自身的权重

我的问题是,我想筛选此表以查找权重小于给定阈值M的所有节点,但如果某个节点存在于我的最终集合中,则其父节点不应在集合中

我使用了
pd.read_hdf(,其中=['weight
来减少所有节点的重量,这些节点的重量满足我的条件,但我不知道如何满足后半部分。这也需要在大部分内存之外完成,因为表本身是巨大的

编辑:我以前从未在这里问过任何问题,所以如果你需要更清楚的问题,请提问

更新:这是表格的一个示例

surname    name    weight
1          1       0.016496
1          2       0.004884
1          3       0.004691
为了阐明我所说的
节点
的含义,假设每一行代表下图中较低3个节点的属性:

       1  
  /    |     \  
11     12     13  
...    ...    ...
例如,节点12通过采用其父节点(1)的名称并连接其位置(2)

节点11、12和13各有3个节点作为其子节点,其权重严格小于各自的父节点。如果我设置权重阈值M=0.0165,我希望返回节点11、12和13,而不返回它们的任何子节点

如果您正在寻找一种类似熊猫的语法,并且您有超出核心的需求,那么您将需要Blaze之类的东西来控制它。表示它可以在并行处理部分处理HDF5文件


然而,你想用它做什么的问题并不清楚。如果必须的话,请给出数据输入和输出的示例。

您能发布完整的代码吗,因为它不太清楚。你说的节点是什么意思?下半部分是什么?如果在下半部分指定一个示例数据集(5-7行),这也会非常有用。我的意思是,我不知道如何满足这样的条件:如果一个节点在我的最终集中,那么它的父节点不在。我希望我的编辑能进一步澄清我的情况本质上,我试图找到第一个节点,其中节点
111
的权重下降到阈值以下-如何区分它是
1+11
还是
11+1
?每个节点正好有3个子节点,每个节点名为1、2、3